home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Reference / the cmsp digests ('94-'97) / csmp digest Vol 3 No 061 < prev    next >
Internet Message Format  |  1997-05-06  |  222KB

  1. From: pottier@clipper.ens.fr (Francois Pottier)
  2. Subject: csmp-digest-v3-061
  3. Date: Thu, 29 Sep 1994 18:36:24 +0100 (MET)
  4.  
  5. C.S.M.P. Digest             Thu, 29 Sep 94       Volume 3 : Issue 61
  6.  
  7. Today's Topics:
  8.  
  9.         Alpha Wordcompletion Script
  10.         Appending data to WindowRecord
  11.         Dialogs and (de)activate events
  12.         Lets talk OpenDoc
  13.         Linking with QuickTime.xcoff for the power pc
  14.         Multiple monitors
  15.         The 'aete' resource and the Script Editor
  16.         can extensions send appleevents?
  17.  
  18.  
  19.  
  20. The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
  21. (pottier@clipper.ens.fr).
  22.  
  23. The digest is a collection of article threads from the internet newsgroup
  24. comp.sys.mac.programmer.  It is designed for people who read c.s.m.p. semi-
  25. regularly and want an archive of the discussions.  If you don't know what a
  26. newsgroup is, you probably don't have access to it.  Ask your systems
  27. administrator(s) for details.  If you don't have access to news, you may
  28. still be able to post messages to the group by using a mail server like
  29. anon.penet.fi (mail help@anon.penet.fi for more information).
  30.  
  31. Each issue of the digest contains one or more sets of articles (called
  32. threads), with each set corresponding to a 'discussion' of a particular
  33. subject.  The articles are not edited; all articles included in this digest
  34. are in their original posted form (as received by our news server at
  35. nef.ens.fr).  Article threads are not added to the digest until the last
  36. article added to the thread is at least two weeks old (this is to ensure that
  37. the thread is dead before adding it to the digest).  Article threads that
  38. consist of only one message are generally not included in the digest.
  39.  
  40. The digest is officially distributed by two means, by email and ftp.
  41.  
  42. If you want to receive the digest by mail, send email to listserv@ens.fr
  43. with no subject and one of the following commands as body:
  44.     help                        Sends you a summary of commands
  45.     subscribe csmp-digest Your Name    Adds you to the mailing list
  46.     signoff csmp-digest            Removes you from the list
  47. Once you have subscribed, you will automatically receive each new
  48. issue as it is created.
  49.  
  50. The official ftp info is //ftp.dartmouth.edu/pub/csmp-digest.
  51. Questions related to the ftp site should be directed to
  52. scott.silver@dartmouth.edu. Currently no previous volumes of the CSMP
  53. digest are available there.
  54.  
  55. Also, the digests are available to WAIS users.  To search back issues
  56. with WAIS, use comp.sys.mac.programmer.src. With Mosaic, use
  57. http://www.wais.com/wais-dbs/comp.sys.mac.programmer.html.
  58.  
  59.  
  60. -------------------------------------------------------
  61.  
  62. >From tnleeuw@cs.vu.nl (Leeuw van der TN)
  63. Subject: Alpha Wordcompletion Script
  64. Date: Thu, 15 Sep 1994 12:09:12 GMT
  65. Organization: Fac. Wiskunde & Informatica, VU, Amsterdam
  66.  
  67. #This is a Tcl 'script'/procedure for use with Pete Keleher's Alpha.
  68. #It completes any word you have typed previously if you bind it to a key.
  69. #(I have it bound to opt-/ to simulate emacs' alt-/)
  70. #See the comments below for some more info. I've tested it as good as I
  71. #can, but cannot guarantee it is bug free. It had some bugs that appeared
  72. #to crash Alpha because it came into an endless loop; press cmd-. if
  73. #that happens. I don't think it will.
  74.  
  75. #If you use Alpha, then Have luck with it!
  76. #--Tim van der Leeuw
  77. #  tnleeuw@cs.vu.nl
  78. #===========================================================================
  79. # 'Word Completion', in the spirit of Paul van Mulbregt's BBXT.
  80. # Composed by Mark Nagata (nagata@kurims.kyoto-u.ac.jp) 
  81. # for Alpha 5.76, 4/22/94.
  82. # Modified by Tim van der Leeuw (tnleeuw@cs.vu.nl), 9/14/94,
  83. # In the spirit of emacs.
  84. # I have modified this routine extensively to add the ability to complete
  85. # a word in multiple ways if called repeatedly.
  86. # For this purpose, I have introduced all the global variables (starting with
  87. # __wc__) and added the first if-statement -- everything between
  88. # 'set pos [getPos]' and 'backwardWord'. In the original routine, I've changed
  89. # some existing variables to globals, prefixing their name with '__wc__'.
  90. #
  91. # This code is probably not the most efficient tcl-code, nor the most elegant
  92. # tcl-code for this problem, but hey, it is the first function I've ever
  93. # written in tcl!
  94. # If anyone has some suggestions for improvement, or
  95. # knows of a better algorithm, I would like to know it.
  96. #================================================================================
  97. set __wc__insPos -1
  98. proc wordCompletion {} {
  99.     global __wc__len __wc__prevPos __wc__insPos __wc__prevFound __wc__pat __wc__nextStart __wc__fwd
  100.     
  101.     set pos [getPos]
  102.     if $pos==$__wc__insPos {
  103.         # Cursor changed place?
  104.         set skipStr $__wc__prevFound
  105.         while 1 {    
  106.             if $__wc__fwd {
  107.                 set fndMsg "found below."
  108.             } else {
  109.                 set fndMsg "found above."
  110.             }
  111.             if {![catch {search -f $__wc__fwd -r 1 -i 0 -m 1 -- $__wc__pat $__wc__nextStart} data]} {
  112.                 set d00 [lindex $data 0]
  113.                 set beg [expr $d00+$__wc__len]
  114.                 set end [lindex $data 1]
  115.                 set __wc__prevFound [getText $d00 $end]
  116.                 if [string compare $skipStr $__wc__prevFound] {
  117.                     # Have we got the same word twice?
  118.                     set txt [getText $beg $end]
  119.                     deleteText $__wc__prevPos $__wc__insPos
  120.                     goto $__wc__prevPos
  121.                     insertText $txt
  122.                     message $fndMsg
  123.                     # Set a number of globals for possible next go-around
  124.                     set __wc__insPos [getPos]
  125.                     if $__wc__fwd {
  126.                         # Search Forwards
  127.                         set __wc__nextStart $end
  128.                         # End of found word
  129.                     } else {
  130.                         # Search Backwards
  131.                         set __wc__nextStart [expr $d00 - $__wc__len]
  132.                         # Before start of found word
  133.                         if $__wc__nextStart<=0 {
  134.                             set __wc__fwd 1
  135.                             set __wc__nextStart $__wc__insPos
  136.                         }
  137.                     }
  138.                     return
  139.                 } else {
  140.                     # Move start of search after finding string again
  141.                     if $__wc__fwd {
  142.                         # Searching Forwards
  143.                         set __wc__nextStart $end
  144.                         # End of found word
  145.                     } else {
  146.                         # Still Searching Backwards
  147.                         set __wc__nextStart [expr $d00 - $__wc__len]
  148.                         # Before start of found word
  149.                         if $__wc__nextStart<=0 {
  150.                             set __wc__fwd 1
  151.                             set __wc__nextStart $__wc__insPos
  152.                         }
  153.                     }
  154.                 }
  155.                 # End if string compare 
  156.             } else {
  157.                 # Search string not found
  158.                 if $__wc__fwd {
  159.                     # We were already looking forward, so the word is not in the file
  160.                     message "Not found."
  161.                     set __wc__insPos -1
  162.                     goto $pos
  163.                     backwardWordSelect
  164.                     return
  165.                 } else {
  166.                     # start looking forward
  167.                     set __wc__fwd 1
  168.                     set __wc__nextStart $__wc__insPos
  169.                 }
  170.             }
  171.             
  172.         }
  173.     }
  174.     backwardWord
  175.     # Start new search for WordCompletion
  176.     set start [getPos]
  177.     set one [getText $start $pos]
  178.     set __wc__len [expr $pos-$start]
  179.     set __wc__pat [append one {[a-zA-Z0-9_]+}]
  180.     set start [expr $start-1]
  181.     if {![catch {search -f 0 -r 1 -i 0 -m 1 -- $__wc__pat $start} data]} {
  182.         set d00 [lindex $data 0]
  183.         set beg [expr $d00+$__wc__len]
  184.         set end [lindex $data 1]
  185.         set __wc__prevFound [getText $d00 $end ]
  186.         set txt [getText $beg $end]
  187.         goto $pos
  188.         insertText $txt
  189.         message "found above."
  190.         # Set a number of globals for possible next go-around
  191.         set __wc__insPos [getPos]
  192.         set __wc__prevPos $pos
  193.         set __wc__nextStart [expr $d00-$__wc__len]
  194.         set __wc__fwd 0
  195.         return
  196.     }
  197.     if {![catch {search -f 1 -r 1 -i 0 -m 1 -- $__wc__pat $pos} data]} {
  198.         set __wc__prevFound [getText [lindex $data 0] [lindex $data 1] ]
  199.         set beg [expr [lindex $data 0]+$__wc__len]
  200.         set end [lindex $data 1]
  201.         set txt [getText $beg $end]
  202.         goto $pos
  203.         insertText $txt
  204.         message "found below."
  205.         # Set a number of globals for possible next go-around
  206.         set __wc__insPos [getPos]
  207.         set __wc__prevPos $pos
  208.         set __wc__nextStart $end
  209.         set __wc__fwd 1
  210.         return
  211.     }
  212.     goto $pos
  213.     backwardWordSelect
  214. }
  215.  
  216.  
  217.  
  218. # This is all due to the idea of Paul van Mulbregt. In his documentation 
  219. # of his BBEdit BBExtension (info-mac/text/bbedit-fl-package-11.hqx), 
  220. # he explains:
  221. # --  From the documentation written by        --
  222. # --  Paul van Mulbregt (paulvm@dragonsys.com) --
  223. # Word Completion
  224. # This extension saves typing, as well as making sure variable names are 
  225. # correct.  While typing the following C code, there is no need to type all 
  226. # of the second occurrence of verySpecialInt.  One could copy and paste, but 
  227. # another way is to type a few letters, and select the Word Completion 
  228. # Extension.
  229. #     int verySpecialInt = 10;
  230. #     while(verySp                                                    
  231. # becomes
  232. #     int verySpecialInt = 10;
  233. #     while(verySpecialInt                                             
  234. #                                                     
  235. # Word Completion will look back in the code to find the first match and then 
  236. # extend the current occurrence to match the previous occurrence.  If a match 
  237. # is not found looking backwards, then it looks forwards.  If not found 
  238. # forwards, the word is selected.  This is a quick way to save on typing, 
  239. # good for helping prevent RSI, but perhaps more importantly, to make sure 
  240. # that variable names are spelt correctly.
  241. # There is no user interface for Word Completion.
  242. # The usefulness of this extension is greatly enhanced if the extension is 
  243. # bound to a key!
  244. # -- end of Paul van Mulbregt's explanation. --
  245.  
  246.  
  247.  
  248.  
  249. ---------------------------
  250.  
  251. >From rollin@newton.apple.com (Keith Rollin)
  252. Subject: Appending data to WindowRecord
  253. Date: Tue, 30 Aug 1994 09:42:08 -0800
  254. Organization: Apple ][ -> Mac -> Taligent -> Newton -> Windows?
  255.  
  256. In article <33do4d$abh@newsy.ifm.liu.se>, jonasw@lysator.liu.se (Jonas
  257. Wallden) wrote:
  258. >
  259. >A great way to extend WindowRecords is to declare your own data type with
  260. >a WindowRecord as the first item.
  261. >
  262. >E.g.,
  263. >
  264. >struct tMyWinData {
  265. >   //  This must come first!
  266. >   WindowRecord   winRec;
  267. >
  268. >   //  Additional window-specific data here...
  269. >   Handle         aHandle;
  270. >   Ptr            aPtr;
  271. >};
  272. >typedef struct tMyWinData tMyWinData;
  273. >typedef tMyWinData *tMyWinPtr;
  274. >
  275. >The trick now is that you can typecast any window pointer to tMyWinPtr (and
  276. >back) and access your window-specific data fields. You might want to place
  277. >your application's unique creator code in the WindowRecord refCon field and
  278. >check it first to be sure you have a window that belongs to your program.
  279. >
  280. >I use this all the time and it is useful in many other places where the
  281. >system gives you a pointer to an object (VBL tasks, ParamBlocks, ...) and
  282. >you need to store extra data. No need to use any globals for this stuff!
  283.  
  284. You know, this is an often-used trick, but I've got a sneaking suspicion
  285. that it might not be a good idea in the long run. The reason for this
  286. feeling is because of something I read in "develop" a while back. In the
  287. article that Dean Yu (I think) wrote on floating windows, there was
  288. mention of converting the Windows.h interfaces over to using WindowRefs
  289. instead of WindowPtrs. (Indeed, users of ETO #15 will see that this change
  290. has already occured.) This change was being done to prepare developers for
  291. the day when windows would change from being accessed directly via
  292. pointers, to the day when they would be accessed via abstract references
  293. that could be mapped by the Window Manager internally to the data
  294. structures representing a window. It seems to me that in such a world, you
  295. could not be able to either a) append your custom data to the standard
  296. window definition, or b) retrieve it given a simple WindowRef.
  297.  
  298. I recommend using the refCon field.
  299.  
  300. - --------------------------------------------------------------------------
  301. Keith Rollin --- Phantom Programmer --- Apple Computer, Inc. --- Team Newton
  302.  
  303. +++++++++++++++++++++++++++
  304.  
  305. >From jonasw@lysator.liu.se (Jonas Wallden)
  306. Date: 31 Aug 1994 15:19:10 GMT
  307. Organization: (none)
  308.  
  309. rollin@newton.apple.com (Keith Rollin) writes:
  310. > I (Jonas) wrote:
  311. >>
  312. >>A great way to extend WindowRecords is to declare your own data type with
  313. >>a WindowRecord as the first item.
  314. >>
  315. >> [code example removed]
  316. >>
  317. >>The trick now is that you can typecast any window pointer to tMyWinPtr (and
  318. >>back) and access your window-specific data fields. You might want to place
  319. >>your application's unique creator code in the WindowRecord refCon field and
  320. >>check it first to be sure you have a window that belongs to your program.
  321. >>
  322. >>I use this all the time and it is useful in many other places where the
  323. >>system gives you a pointer to an object (VBL tasks, ParamBlocks, ...) and
  324. >>you need to store extra data. No need to use any globals for this stuff!
  325. >
  326. >You know, this is an often-used trick, but I've got a sneaking suspicion
  327. >that it might not be a good idea in the long run. The reason for this
  328. >feeling is because of something I read in "develop" a while back. In the
  329. >article that Dean Yu (I think) wrote on floating windows, there was
  330. >mention of converting the Windows.h interfaces over to using WindowRefs
  331. >instead of WindowPtrs.
  332.  
  333. Yes, now that you mention it I remember that article. Your point is very
  334. valid, and should be taken into consideration for code that one expects
  335. to use for a long time. However, like you said yourself, this trick is
  336. widely used and a lot of applications would break if things changed tomorrow.
  337.  
  338. > Indeed, users of ETO #15 will see that this change has already occured.
  339.  
  340. I haven't seen it in the Universal Interfaces included on CW4. Are the ones
  341. on ETO #15 different?
  342.  
  343. I agree that hiding the internal structure of things is a good thing as it
  344. will make it easier for Apple to change the system without breaking
  345. applications.
  346.  
  347. >I recommend using the refCon field.
  348.  
  349. Which leads us back to the original problem where the poster was afraid to
  350. treat this field as a pointer in case some other window appeared in his
  351. application's window list (CommsToolbox (did I spell it right? :-) windows
  352. were mentioned as an example).
  353.  
  354. One can of course first check the windowKind field, which doesn't have any
  355. accessor function...
  356.  
  357. >Keith Rollin --- Phantom Programmer --- Apple Computer, Inc. --- Team Newton
  358.  
  359. --
  360. `.`.   Jonas Wallden                    `.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.
  361. `.`.`.   Internet: jonasw@lysator.liu.se  `.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.
  362. `.`.`.`.   AppleLink: sw1369                `.`.`.`.`.`.`.`.`.`.`.`.`.`.`.
  363.  
  364. +++++++++++++++++++++++++++
  365.  
  366. >From bb@lightside.com (Bob Bradley)
  367. Date: Tue, 30 Aug 1994 01:50:06 -0800
  368. Organization: SS Software Inc.
  369.  
  370. In article <34271e$i33@newsy.ifm.liu.se>, jonasw@lysator.liu.se (Jonas
  371. Wallden) wrote:
  372.  
  373. > One can of course first check the windowKind field, which doesn't have any
  374. > accessor function...
  375.  
  376. The only problem I've found with this is when using Dialogs which don't
  377. work properly with IsDialogEvent and DialogSelect if you change the
  378. windowKind field to something other than dialogKind. The only solution
  379. I've found in that case is to append data to the WindowRecord.
  380.  
  381. +++++++++++++++++++++++++++
  382.  
  383. >From mhl@icf.hrb.com (MARK H. LINTON)
  384. Date: 31 Aug 94 15:39:42 EST
  385. Organization: HRB Systems, Inc.
  386.  
  387. In article <34271e$i33@newsy.ifm.liu.se>, jonasw@lysator.liu.se (Jonas Wallden) writes:
  388. > rollin@newton.apple.com (Keith Rollin) writes:
  389. >> I (Jonas) wrote:
  390. >>>
  391. >>>A great way to extend WindowRecords is to declare your own data type with
  392. >>>a WindowRecord as the first item.
  393. >>>
  394. >>
  395. >>You know, this is an often-used trick, but I've got a sneaking suspicion
  396. >>that it might not be a good idea in the long run. The reason for this
  397. >>feeling is because of something I read in "develop" a while back. 
  398. > Yes, now that you mention it I remember that article. Your point is very
  399. > valid, and should be taken into consideration for code that one expects
  400. > to use for a long time. 
  401.    [snip]
  402. >>I recommend using the refCon field.
  403. > Which leads us back to the original problem where the poster was afraid to
  404. > treat this field as a pointer in case some other window appeared in his
  405. > application's window list (CommsToolbox (did I spell it right? :-) windows
  406. > were mentioned as an example).
  407. > One can of course first check the windowKind field, which doesn't have any
  408. > accessor function...
  409. >>Keith Rollin --- Phantom Programmer --- Apple Computer, Inc. --- Team Newton
  410.  
  411. When my applications create their own windows, they allocate a relocatable
  412. block (via NewHandle) to a structure describing the window. The structure of
  413. this information varies based on the particular application, but always
  414. includes, at minimum, as its first field an identifier.
  415.  
  416. Please consider the following pseudo-code, as I am not at my Macintosh at the
  417. moment.
  418.  
  419. typedef struct MinWinInfo {
  420.     OSType identifier;
  421. } MinWinInfoRecord, *MinWinInfoPtr, **MinWinInfoHandle;
  422.  
  423. Boolean OwnWindow(WindowPtr aWindow) {
  424.     Boolean ownWindow = false;
  425.     MinWinInfoHandle theInfoHandle;
  426.  
  427.     if (aWindow != nil) { /* can only own existent windows */
  428.         theInfoHandle = (MinWinInfoHandle)GetWRefCon(aWindow);
  429.         if (theInfoHandle != nil) { /* and we always add a refCon */
  430.             if ((**theInfoHandle).identifier == kThisAppSignature) {
  431.                 ownWindow = true; /* and the first four bytes match our sig */
  432.             }
  433.         }
  434.     }
  435.     return ownWindow;
  436. }
  437.  
  438. So whenever I need to see whether a window is mine I just call OwnWindow.
  439.  
  440. Does this help? Or did I miss the question entirely?
  441.  
  442. Mark
  443. - --------
  444. I don't know whether my employer has opinions.
  445.  
  446. +++++++++++++++++++++++++++
  447.  
  448. >From jonasw@lysator.liu.se (Jonas Wallden)
  449. Date: 31 Aug 1994 21:35:02 GMT
  450. Organization: (none)
  451.  
  452. mhl@icf.hrb.com (MARK H. LINTON) writes:
  453. >
  454. >When my applications create their own windows, they allocate a relocatable
  455. >block (via NewHandle) to a structure describing the window. The structure of
  456. >this information varies based on the particular application, but always
  457. >includes, at minimum, as its first field an identifier.
  458. >
  459. >Please consider the following pseudo-code, as I am not at my Macintosh at the
  460. >moment.
  461. >
  462. >typedef struct MinWinInfo {
  463. >    OSType identifier;
  464. >} MinWinInfoRecord, *MinWinInfoPtr, **MinWinInfoHandle;
  465. >
  466. >Boolean OwnWindow(WindowPtr aWindow) {
  467. >    Boolean ownWindow = false;
  468. >    MinWinInfoHandle theInfoHandle;
  469. >
  470. >    if (aWindow != nil) { /* can only own existent windows */
  471. >        theInfoHandle = (MinWinInfoHandle)GetWRefCon(aWindow);
  472. >        if (theInfoHandle != nil) { /* and we always add a refCon */
  473. >            if ((**theInfoHandle).identifier == kThisAppSignature) {
  474.  
  475. The problem is that we can't be 100% sure the RefCon field holds a pointer
  476. or handle for *all* windows as some windows not created by our application
  477. can appear in our WindowList. These external windows may use the RefCon
  478. field in any way (e.g. hold flags or whatever), making it impossible to
  479. dereference the value to check for the magic cookie.
  480.  
  481. >                ownWindow = true; /* and the first four bytes match our sig */
  482. >            }
  483. >        }
  484. >    }
  485. >    return ownWindow;
  486. >}
  487. >
  488. >So whenever I need to see whether a window is mine I just call OwnWindow.
  489. >
  490. >Does this help? Or did I miss the question entirely?
  491.  
  492. See above.
  493.  
  494. Hopefully the Apple guys come up with a nice improved Window Manager which
  495. supposedly is in the works. From what I've heard it will support floating
  496. windows directly (yes!), and that alone will make a lot of ugly code unneeded.
  497.  
  498. Anyone else mad at not getting modeless dialogs to work correctly together
  499. with floating windows? Yeah, I thought so...
  500. --
  501. `.`.   Jonas Wallden                    `.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.
  502. `.`.`.   Internet: jonasw@lysator.liu.se  `.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.
  503. `.`.`.`.   AppleLink: sw1369                `.`.`.`.`.`.`.`.`.`.`.`.`.`.`.
  504.  
  505. +++++++++++++++++++++++++++
  506.  
  507. >From h+@nada.kth.se (Jon W{tte)
  508. Date: Thu, 01 Sep 1994 14:55:07 +0200
  509. Organization: Royal Institute of Something or other
  510.  
  511. In article <342t26$1ia@newsy.ifm.liu.se>,
  512. jonasw@lysator.liu.se (Jonas Wallden) wrote:
  513.  
  514. >The problem is that we can't be 100% sure the RefCon field holds a pointer
  515. >or handle for *all* windows as some windows not created by our application
  516. >can appear in our WindowList. These external windows may use the RefCon
  517.  
  518. All windows in our window list that are not our own have 
  519. negative windowKinds, or at least windowKinds < 8.
  520.  
  521. Cheers,
  522.  
  523.                     / h+
  524.  
  525.  
  526. --
  527.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  528.  
  529.   Reality exists only in your imagination.
  530.  
  531.  
  532. +++++++++++++++++++++++++++
  533.  
  534. >From mhl@icf.hrb.com (MARK H. LINTON)
  535. Date: 1 Sep 94 08:50:27 EST
  536. Organization: HRB Systems, Inc.
  537.  
  538. In article <342t26$1ia@newsy.ifm.liu.se>, jonasw@lysator.liu.se (Jonas Wallden) writes:
  539. > mhl@icf.hrb.com (MARK H. LINTON) writes:
  540. >>
  541. >>    if (aWindow != nil) { /* can only own existent windows */
  542. >>        theInfoHandle = (MinWinInfoHandle)GetWRefCon(aWindow);
  543. >>        if (theInfoHandle != nil) { /* and we always add a refCon */
  544. >>            if ((**theInfoHandle).identifier == kThisAppSignature) {
  545. > The problem is that we can't be 100% sure the RefCon field holds a pointer
  546. > or handle for *all* windows as some windows not created by our application
  547. > can appear in our WindowList. These external windows may use the RefCon
  548. > field in any way (e.g. hold flags or whatever), making it impossible to
  549. > dereference the value to check for the magic cookie.
  550.  
  551. Jonas,
  552.     Correct me if I'm wrong here. I did not say that the refCon WAS a handle.
  553. The cast on the GetWRefCon tells the compiler to ASSUME that the refCon is
  554. a handle. If it is flags or maybe a handle to another type of structure used by
  555. another type of window. HOWEVER, it is highly unlikely that the first four
  556. bytes of the memory arrived at by double de-referencing (**) the refCon will
  557. contain my applications signature, whether the assumption was true or not,
  558. UNLESS this is one of my windows.
  559.  
  560. BTW my applications require System 7 and at least a 68030 to run, so I do not
  561. care if in my (**) I come across an odd address ;^)
  562.  
  563. Mark
  564.  
  565. +++++++++++++++++++++++++++
  566.  
  567. >From dazuma@cco.caltech.edu (Daniel Azuma)
  568. Date: Thu, 01 Sep 1994 08:06:29 -0700
  569. Organization: California Institute of Technology
  570.  
  571. mhl@icf.hrb.com (MARK H. LINTON) wrote:
  572.  
  573. >     Correct me if I'm wrong here. I did not say that the refCon WAS a handle.
  574. > The cast on the GetWRefCon tells the compiler to ASSUME that the refCon is
  575. > a handle. If it is flags or maybe a handle to another type of structure used
  576. > by another type of window. HOWEVER, it is highly unlikely that the first four
  577. > bytes of the memory arrived at by double de-referencing (**) the refCon will
  578. > contain my applications signature, whether the assumption was true or not,
  579. > UNLESS this is one of my windows.
  580. > BTW my applications require System 7 and at least a 68030 to run, so I do not
  581. > care if in my (**) I come across an odd address ;^)
  582.  
  583. You still have to worry, even if you require an '020/'030. Trying to
  584. dereference addresses in a certain range-- I don't know the range, but the
  585. famous constant 0x50FFC001 is within it-- will cause a bus error.
  586.  
  587. What I've ended up doing is keeping my own data structure listing all the
  588. windows I "know about", including modeless dialogs. My array keeps the
  589. WindowPtr, a constant describing the kind of window, and some other fields
  590. containing various other info. Then, when I need to know something about a
  591. particular window (say, from FrontWindow()), I look the WindowPtr up in
  592. the table and snatch whatever info I need. If the WindowPtr isn't there, I
  593. know it's a window someone else rudely :) stuck into my window list. Not
  594. the most efficient way of doing things, I'm sure, but I think it's
  595. relatively un-breakable.
  596.  
  597. And, of course, later I can replace the WindowPtr field with a WindowRef
  598. and have it work the same way.
  599.  
  600. Dan
  601.  
  602. - ----------------------------------------------------------------
  603.   Daniel Azuma            | "Rejoice in the Lord always; again I
  604.   Caltech                 |  will say, Rejoice..."
  605.   dazuma@cco.caltech.edu  |              --Philippians 4:4
  606. - ----------------------------------------------------------------
  607.  
  608. +++++++++++++++++++++++++++
  609.  
  610. >From jonasw@lysator.liu.se (Jonas Wallden)
  611. Date: 1 Sep 1994 15:54:15 GMT
  612. Organization: (none)
  613.  
  614. mhl@icf.hrb.com (MARK H. LINTON) writes:
  615.  
  616. >In article <342t26$1ia@newsy.ifm.liu.se>, jonasw@lysator.liu.se (Jonas Wallden) writes:
  617. >> mhl@icf.hrb.com (MARK H. LINTON) writes:
  618. >>>
  619. >>>    if (aWindow != nil) { /* can only own existent windows */
  620. >>>        theInfoHandle = (MinWinInfoHandle)GetWRefCon(aWindow);
  621. >>>        if (theInfoHandle != nil) { /* and we always add a refCon */
  622. >>>            if ((**theInfoHandle).identifier == kThisAppSignature) {
  623. >> 
  624. >> The problem is that we can't be 100% sure the RefCon field holds a pointer
  625. >> or handle for *all* windows as some windows not created by our application
  626. >> can appear in our WindowList. These external windows may use the RefCon
  627. >> field in any way (e.g. hold flags or whatever), making it impossible to
  628. >> dereference the value to check for the magic cookie.
  629. >> 
  630. >
  631. >Jonas,
  632. >    Correct me if I'm wrong here. I did not say that the refCon WAS a handle.
  633. >The cast on the GetWRefCon tells the compiler to ASSUME that the refCon is
  634. >a handle. If it is flags or maybe a handle to another type of structure used
  635. >by another type of window. HOWEVER, it is highly unlikely that the first four
  636. >bytes of the memory arrived at by double de-referencing (**) the refCon will
  637. >contain my applications signature, whether the assumption was true or not,
  638. >UNLESS this is one of my windows.
  639. >
  640. >BTW my applications require System 7 and at least a 68030 to run, so I do not
  641. >care if in my (**) I come across an odd address ;^)
  642.  
  643. But you can get address errors on these machines as well! How do you think
  644. EvenBetterBusError works?
  645.  
  646. And like I, Jon and others have said earlier, one can check the windowKind
  647. field first to avoid these cases. But that is just as bad as appending data to
  648. the WindowRecord as long as there isn't any high-level (i.e. future-compatible)
  649. way to do this.
  650.  
  651. --
  652. `.`.   Jonas Wallden                    `.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.
  653. `.`.`.   Internet: jonasw@lysator.liu.se  `.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.
  654. `.`.`.`.   AppleLink: sw1369                `.`.`.`.`.`.`.`.`.`.`.`.`.`.`.
  655.  
  656. +++++++++++++++++++++++++++
  657.  
  658. >From ivanski@world.std.com (Ivan M CaveroBelaunde)
  659. Date: Thu, 1 Sep 1994 16:15:59 GMT
  660. Organization: The World Public Access UNIX, Brookline, MA
  661.  
  662. jonasw@lysator.liu.se (Jonas Wallden) writes:
  663. >>Boolean OwnWindow(WindowPtr aWindow) {
  664. >>    Boolean ownWindow = false;
  665. >>    MinWinInfoHandle theInfoHandle;
  666. >>
  667. >>    if (aWindow != nil) { /* can only own existent windows */
  668. >>        theInfoHandle = (MinWinInfoHandle)GetWRefCon(aWindow);
  669. >>        if (theInfoHandle != nil) { /* and we always add a refCon */
  670. >>            if ((**theInfoHandle).identifier == kThisAppSignature) {
  671. >The problem is that we can't be 100% sure the RefCon field holds a pointer
  672. >or handle for *all* windows as some windows not created by our application
  673. >can appear in our WindowList. These external windows may use the RefCon
  674. >field in any way (e.g. hold flags or whatever), making it impossible to
  675. >dereference the value to check for the magic cookie.
  676.  
  677. So use a "ValidHandle" routine to determine that the refcon is a handle
  678. before messing with it:
  679.     - Check that it's even.
  680.     - Check that it's below BufPtr.
  681.     - Do both checks again for the "assumed" master pointer.
  682.     - Call HandleZone.
  683.  
  684. in that order. Then you know you have a handle you can safely dereference.
  685.  
  686. -Ivan
  687. - -
  688. Ivan Cavero Belaunde (ivanski@world.std.com)
  689. Avid VideoShop Project Lead
  690. Avid Technology, Inc.
  691.  
  692. +++++++++++++++++++++++++++
  693.  
  694. >From mhl@icf.hrb.com (MARK H. LINTON)
  695. Date: 1 Sep 94 13:27:35 EST
  696. Organization: HRB Systems, Inc.
  697.  
  698. From: jonasw@lysator.liu.se (Jonas Wallden)
  699. >>In article <342t26$1ia@newsy.ifm.liu.se>, jonasw@lysator.liu.se (Jonas Wallden) writes:
  700. >>> mhl@icf.hrb.com (MARK H. LINTON) writes:
  701. >>>>
  702. >>>>    if (aWindow != nil) { /* can only own existent windows */
  703. >>>>        theInfoHandle = (MinWinInfoHandle)GetWRefCon(aWindow);
  704. >>>>        if (theInfoHandle != nil) { /* and we always add a refCon */
  705. >>>>            if ((**theInfoHandle).identifier == kThisAppSignature) {
  706. >>> 
  707. >>> The problem is that we can't be 100% sure the RefCon field holds a pointer
  708. >>> or handle for *all* windows as some windows not created by our application
  709. >>> can appear in our WindowList. [snip]
  710. >>
  711. >>Jonas,
  712. >>    Correct me if I'm wrong here. I did not say that the refCon WAS a handle.
  713. >>The cast on the GetWRefCon tells the compiler to ASSUME that the refCon is
  714. >>a handle. [snip]
  715. >>
  716. >>BTW my applications require System 7 and at least a 68030 to run, so I do not
  717. >>care if in my (**) I come across an odd address ;^)
  718. >
  719. >But you can get address errors on these machines as well! How do you think
  720. >EvenBetterBusError works?
  721. >
  722.  
  723. Gosh, I guess I was wrong :) and, yes, I have EvenBetterBusError installed, but
  724. I seem to recall the release notes saying something about needing to allow
  725. certain Toolbox routines to do things that would normally trigger EBBE. Perhaps
  726. this is the sort of thing that required that. (?)
  727.  
  728. >
  729. >And like I, Jon and others have said earlier, one can check the windowKind
  730. >field first to avoid these cases. But that is just as bad as appending data to
  731. >the WindowRecord as long as there isn't any high-level (i.e. future-compatible)
  732. >way to do this.
  733. >
  734.  
  735. Yes, I agree. I really do not like the windowKind check.
  736.  
  737. From: ivanski@world.std.com (Ivan M CaveroBelaunde)
  738. >
  739. >So use a "ValidHandle" routine to determine that the refcon is a handle
  740. >before messing with it:
  741. >    - Check that it's even.
  742. >    - Check that it's below BufPtr.
  743. >    - Do both checks again for the "assumed" master pointer.
  744. >    - Call HandleZone.
  745. >
  746. >in that order. Then you know you have a handle you can safely dereference.
  747. >
  748.  
  749. Hey! Way Cool! Where I originally said  "if (theInfoHandle != nil) {", I really
  750. should have said "if (ValidHandle((Handle)theInfoHandle)) {".
  751.  
  752. Got any CODE? ;^)
  753.  
  754. From: dazuma@cco.caltech.edu (Daniel Azuma)
  755. >
  756. >You still have to worry, even if you require an '020/'030. Trying to
  757. >dereference addresses in a certain range-- I don't know the range, but the
  758. >famous constant 0x50FFC001 is within it-- will cause a bus error.
  759. >
  760.  
  761. Yes. I keep getting told this :^) and pardon my ignorance but what is that
  762. famous constant?
  763.  
  764. >
  765. >What I've ended up doing is keeping my own data structure listing all the
  766. >windows I "know about", including modeless dialogs. My array keeps the
  767. >WindowPtr, a constant describing the kind of window, and some other fields
  768. >containing various other info. Then, when I need to know something about a
  769. >particular window (say, from FrontWindow()), I look the WindowPtr up in
  770. >the table and snatch whatever info I need. If the WindowPtr isn't there, I
  771. >know it's a window someone else rudely :) stuck into my window list. Not
  772. >the most efficient way of doing things, I'm sure, but I think it's
  773. >relatively un-breakable.
  774. >
  775. >And, of course, later I can replace the WindowPtr field with a WindowRef
  776. >and have it work the same way.
  777. >
  778.  
  779. Until today I would have gaged at the extra baggage here. But I have been
  780. following this other thread (Subject: Selecting Window via menus) on which was
  781. recently posted a reasonable solution (From: Matt Slot 
  782. <fprefect@engin.umich.edu>) that required a similar structure. Now that I see
  783. the two side by side, I might try to roll them together and come up with a
  784. reasonable "Window Manager". Hey, now wasn't that Jonas' original point? :)
  785.  
  786. Mark
  787.  
  788.  
  789. +++++++++++++++++++++++++++
  790.  
  791. >From dazuma@cco.caltech.edu (Daniel Azuma)
  792. Date: Thu, 01 Sep 1994 11:37:34 -0700
  793. Organization: California Institute of Technology
  794.  
  795. mhl@icf.hrb.com (MARK H. LINTON) wrote:
  796.  
  797. > From: ivanski@world.std.com (Ivan M CaveroBelaunde)
  798. > >
  799. > >So use a "ValidHandle" routine to determine that the refcon is a handle
  800. > >before messing with it:
  801. > >       - Check that it's even.
  802. > >       - Check that it's below BufPtr.
  803. > >       - Do both checks again for the "assumed" master pointer.
  804. > >       - Call HandleZone.
  805. > >
  806. > >in that order. Then you know you have a handle you can safely dereference.
  807.  
  808. That's pretty cool, yeah! My question is, how would it work when running
  809. PPC native? I'm kinda clueless about PowerMac memory management...
  810.  
  811. > >You still have to worry, even if you require an '020/'030. Trying to
  812. > >dereference addresses in a certain range-- I don't know the range, but the
  813. > >famous constant 0x50FFC001 is within it-- will cause a bus error.
  814. > Yes. I keep getting told this :^) and pardon my ignorance but what is that
  815. > famous constant?
  816.  
  817. It's the long that EBBE stuffs into nil. Supposedly, it's designed to
  818. cause a bus or address error on any mac with any memory configuration. I
  819. don't know exactly what's so special about this constant as opposed to,
  820. say, 0x60FFC001, though. :)
  821.  
  822. Dan
  823.  
  824. - ----------------------------------------------------------------
  825.   Daniel Azuma            | "Rejoice in the Lord always; again I
  826.   Caltech                 |  will say, Rejoice..."
  827.   dazuma@cco.caltech.edu  |              --Philippians 4:4
  828. - ----------------------------------------------------------------
  829.  
  830. +++++++++++++++++++++++++++
  831.  
  832. >From peter.lewis@info.curtin.edu.au (Peter N Lewis)
  833. Date: Fri, 02 Sep 1994 11:37:10 +0800
  834. Organization: NCRPDA, Curtin University
  835.  
  836. In article <1994Sep1.085027.21786@hrbicf>, mhl@icf.hrb.com (MARK H.
  837. LINTON) wrote:
  838.  
  839. >BTW my applications require System 7 and at least a 68030 to run, so I do not
  840. >care if in my (**) I come across an odd address ;^)
  841.  
  842. Yeah, but what if it is an address that isn't valid, or isn't mapped, or
  843. whatever.  It'll still go bang.  You need to use some variant of
  844. ValidHandle, checking that the ptr is even, and inside your heap, and that
  845. the ptr points to a ptr that is even and in your heap are definitely good
  846. ideas if you are going to use this scheme.
  847.    Peter.
  848. -- 
  849. Peter N Lewis <peter.lewis@info.curtin.edu.au> - Macintosh TCP fingerpainter
  850.  
  851. +++++++++++++++++++++++++++
  852.  
  853. >From h+@nada.kth.se (Jon W{tte)
  854. Date: Fri, 02 Sep 1994 09:18:41 +0200
  855. Organization: Royal Institute of Something or other
  856.  
  857. In article <344tf7$4d2@newsy.ifm.liu.se>,
  858. jonasw@lysator.liu.se (Jonas Wallden) wrote:
  859.  
  860. >And like I, Jon and others have said earlier, one can check the windowKind
  861. >field first to avoid these cases. But that is just as bad as appending data to
  862. >the WindowRecord as long as there isn't any high-level (i.e. future-compatible)
  863. >way to do this.
  864.  
  865. I do a #define GetWindowKind(w) ((WindowPeek)w)->windowKind
  866.  
  867. Then when the real call comes around... The interesting thing 
  868. is that Apple promises that if you follow the current API, and 
  869. READ but not WRITE where there are no accessor functions, there 
  870. will be a compatiblity mode. However, to take advantage of the 
  871. new features, you need a partial re-design and total recompile.
  872.  
  873. Cheers,
  874.  
  875.                     / h+
  876.  
  877.  
  878. --
  879.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  880.  
  881.   Reality exists only in your imagination.
  882.  
  883.  
  884. +++++++++++++++++++++++++++
  885.  
  886. >From siegel@netcom.com (Rich Siegel)
  887. Date: Fri, 2 Sep 1994 18:02:45 GMT
  888. Organization: Bare Bones Software
  889.  
  890. In article <dazuma-0109941137340001@m22108.esl.com> dazuma@cco.caltech.edu (Daniel Azuma) writes:
  891. >> From: ivanski@world.std.com (Ivan M CaveroBelaunde)
  892. >> >
  893. >> >So use a "ValidHandle" routine to determine that the refcon is a handle
  894. >> >before messing with it:
  895. >> >       - Check that it's even.
  896. >> >       - Check that it's below BufPtr.
  897. >> >       - Do both checks again for the "assumed" master pointer.
  898. >> >       - Call HandleZone.
  899. >> >
  900. >> >in that order. Then you know you have a handle you can safely dereference.
  901. >
  902. >That's pretty cool, yeah! My question is, how would it work when running
  903. >PPC native? I'm kinda clueless about PowerMac memory management...
  904.  
  905. It works just the same. The second word in "Power Macintosh" is
  906. "Macintosh", and that's just what a Power Macintosh is, from the
  907. application programmer's point of view.
  908.  
  909. Incidentally, you probably only want to use Ivan's handle check in
  910. debugging code, not in shipping code: HandleZone() doesn't come for
  911. free.
  912.  
  913. R.
  914. -- 
  915. Rich Siegel % siegel@netcom.com    % President & CEO, Bare Bones Software Inc.
  916. --> For information about BBEdit, finger bbedit@world.std.com <--
  917.  
  918. +++++++++++++++++++++++++++
  919.  
  920. >From h+@nada.kth.se (Jon W{tte)
  921. Date: Sun, 04 Sep 1994 13:17:08 +0200
  922. Organization: Royal Institute of Something or other
  923.  
  924. In article <dazuma-0109941137340001@m22108.esl.com>,
  925. dazuma@cco.caltech.edu (Daniel Azuma) wrote:
  926.  
  927. >It's the long that EBBE stuffs into nil. Supposedly, it's designed to
  928. >cause a bus or address error on any mac with any memory configuration. I
  929. >don't know exactly what's so special about this constant as opposed to,
  930. >say, 0x60FFC001, though. :)
  931.  
  932. 50ff is also an illegal instruction, so if you JUMP to 0L, 
  933. you'll get an immediate break.
  934.  
  935. Cheers,
  936.  
  937.                         / h+
  938.  
  939.  
  940. --
  941.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  942.  Engineering: "How will this work?" Science: "Why will this work?" Management:
  943.  "When will this work?"  Liberal Arts: "Do you want fries with that?"
  944.                      -- Jesse N. Schell
  945.  
  946.  
  947. +++++++++++++++++++++++++++
  948.  
  949. >From Ron_Hunsinger@bmug.org (Ron Hunsinger)
  950. Date: Wed,  7 Sep 94 03:23:37 PST
  951. Organization: Berkeley Macintosh Users Group
  952.  
  953. siegel@netcom.com writes:
  954.  
  955. >Incidentally, you probably only want to use Ivan's handle check in
  956. >debugging code, not in shipping code: HandleZone() doesn't come for
  957. >free.
  958.  
  959. And if you were a ship-builder, I suppose your ships would only be 
  960. equipped with life boats while you tested them in the harbor, but you 
  961. would remove all that extra baggage before sending them out to sea?  
  962.  
  963. -Ron Hunsinger
  964.  
  965. +++++++++++++++++++++++++++
  966.  
  967. >From kluev@jonathan.srcc.msu.su (Kluev)
  968. Date: Wed, 7 Sep 94 20:22:41 +0400
  969. Organization: (none)
  970.  
  971. In article <9668AA8B9BCC.DC7EB6@klkmac014.nada.kth.se>
  972. h+@nada.kth.se (Jon W{tte) wrote:
  973.  
  974. In article <342t26$1ia@newsy.ifm.liu.se>,
  975. jonasw@lysator.liu.se (Jonas Wallden) wrote:
  976. >
  977. > >The problem is that we can't be 100% sure the RefCon field holds a
  978. pointer
  979. > >or handle for *all* windows as some windows not created by our
  980. application
  981. > >can appear in our WindowList. These external windows may use the
  982. RefCon
  983. >
  984. > All windows in our window list that are not our own have 
  985. > negative windowKinds, or at least windowKinds < 8.
  986.  
  987. The problem doesn't go away: how to distinguish system dialog and
  988. my dialog? (windowKind = dialogKind = 2 in this case). The only
  989. compatible solution is the one suggested by someone else: keep your
  990. own list of windows in addition to standard one
  991. (FrontWindow()-> nextWindow-> nextWindow-> ...).
  992.  
  993. Michael Kluev.
  994.  
  995. +++++++++++++++++++++++++++
  996.  
  997. >From mxmora@unix.sri.com (Matt Mora)
  998. Date: 8 Sep 1994 09:09:29 -0700
  999. Organization: SRI International, Menlo Park, CA
  1000.  
  1001. In article <523026979413@jonathan.srcc.msu.su> kluev@jonathan.srcc.msu.su (Kluev) writes:
  1002.  
  1003. >compatible solution is the one suggested by someone else: keep your
  1004. >own list of windows in addition to standard one
  1005. >(FrontWindow()-> nextWindow-> nextWindow-> ...).
  1006.  
  1007.  
  1008. I have missed most of the thread but if its about seeing if the window
  1009. is yours or not I usally add a field called magicSig and stuff that with
  1010. The app signature or something. So you can tell a window is yours by
  1011. doing the windowPeek->magicSig == mySig trick. 
  1012.  
  1013. Xavier
  1014.  
  1015.  
  1016. -- 
  1017. ___________________________________________________________
  1018. Matthew Xavier Mora                       Matt_Mora@sri.com
  1019. SRI International                       mxmora@unix.sri.com
  1020. 333 Ravenswood Ave                    Menlo Park, CA. 94025
  1021.  
  1022. +++++++++++++++++++++++++++
  1023.  
  1024. >From gbolsinga@aol.com (GBolsinga)
  1025. Date: 8 Sep 1994 16:29:04 -0400
  1026. Organization: America Online, Inc. (1-800-827-6364)
  1027.  
  1028. I haven't been able to follow the whole thread, but when can your app get
  1029. windows that don't belong to it? I certain that I read in NIM: Mac Toolbox
  1030. Essentials that your app can't get windows from other apps.  I can't 
  1031. remember if it was in the Event Mgr or Window Mgr Chapter.  I know that
  1032. there are some errors in NIM.  Could someone please let me know how a
  1033. window from another app could be seen by my app?
  1034.  
  1035. You see, I am trying to decide how I will keep my extra data with the 
  1036. window, since I'm starting on a new project, and I wasn't too happy with
  1037. the way I have been doing it.
  1038.  
  1039. Thanks.
  1040.  
  1041. Greg Bolsinga
  1042. MPI Multimedia
  1043. /* these are my opinions */
  1044.  
  1045.  
  1046. +++++++++++++++++++++++++++
  1047.  
  1048. >From h+@nada.kth.se (Jon W{tte)
  1049. Date: Fri, 09 Sep 1994 10:07:15 +0200
  1050. Organization: Royal Institute of Something or other
  1051.  
  1052. In article <0019C298.fc@bmug.org>,
  1053. Ron_Hunsinger@bmug.org (Ron Hunsinger) wrote:
  1054.  
  1055. >>Incidentally, you probably only want to use Ivan's handle check in
  1056. >>debugging code, not in shipping code: HandleZone() doesn't come for
  1057. >>free.
  1058.  
  1059. >And if you were a ship-builder, I suppose your ships would only be 
  1060. >equipped with life boats while you tested them in the harbor, but you 
  1061. >would remove all that extra baggage before sending them out to sea?  
  1062.  
  1063. This is interesting!
  1064.  
  1065. If you were a ship builder, would you equip the release version 
  1066. of your ship with helocopters, VTOL jets, lifeboats AND an 
  1067. inflatable cruiser, each capable of holding twice the capacity 
  1068. of the original ship?
  1069.  
  1070. Debugging code is there to help you catch bugs automatically. 
  1071. By the time you ship, you're supposed to have removed all the 
  1072. bugs (right :-) so users might be somewhat unenthusiastic about 
  1073. waiting two minutes for an "Open File" dialog box to show up.
  1074.  
  1075. That aside, I usually ship with the debug version of the oops 
  1076. libraries, meaning method calls for unknown methods or illegal 
  1077. objects are usually flagged as command failures (using the old 
  1078. TCL)
  1079.  
  1080. HandleZone, however, or RecoverHandle, are so expensive that 
  1081. you shouldn't use them in production code unless totally 
  1082. necessary.
  1083.  
  1084. Cheers,
  1085.  
  1086.                 / h+
  1087.  
  1088.  
  1089. --
  1090.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  1091.    This is the kind of totally-gross-out-sick stuff you can do with C++ that
  1092.    makes the language kind of neat.
  1093.                                             -- Keith Rollin
  1094.  
  1095.  
  1096. +++++++++++++++++++++++++++
  1097.  
  1098. >From Jens Alfke <jens_alfke@powertalk.apple.com>
  1099. Date: Sat, 10 Sep 1994 00:02:57 GMT
  1100. Organization: Apple Computer
  1101.  
  1102. Kluev, kluev@jonathan.srcc.msu.su writes:
  1103. > The problem doesn't go away: how to distinguish system dialog and
  1104. > my dialog? (windowKind = dialogKind = 2 in this case). The only
  1105. > compatible solution is the one suggested by someone else: keep your
  1106. > own list of windows in addition to standard one
  1107. > (FrontWindow()-> nextWindow-> nextWindow-> ...).
  1108.  
  1109. Or just don't use dialogs at all. I've found that the effort needed to
  1110. replace the dialog manager isn't much more than the effort needed to write a
  1111. bunch of good dialog utilities to make the dialog manager easily useable...
  1112.  
  1113. --Jens Alfke                           jens_alfke@powertalk.apple.com
  1114.                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  1115.  
  1116. +++++++++++++++++++++++++++
  1117.  
  1118. >From peter.lewis@info.curtin.edu.au (Peter N Lewis)
  1119. Date: Sun, 11 Sep 1994 16:30:33 +0800
  1120. Organization: NCRPDA, Curtin University
  1121.  
  1122. >Or just don't use dialogs at all. I've found that the effort needed to
  1123. >replace the dialog manager isn't much more than the effort needed to write a
  1124. >bunch of good dialog utilities to make the dialog manager easily useable...
  1125.  
  1126. Yep, very true.  I've gone the other way (using only DLOGs), and if I had
  1127. it to do over again, I'd swap.
  1128.    Peter.
  1129. -- 
  1130. Peter N Lewis <peter.lewis@info.curtin.edu.au> - Macintosh TCP fingerpainter
  1131. FTP my programs from redback.cs.uwa.edu.au:Others/PeterLewis/ or
  1132. amug.org:pub/peterlewis/ or nic.switch.ch:software/mac/peterlewis/
  1133.  
  1134. +++++++++++++++++++++++++++
  1135.  
  1136. >From kluev@jonathan.srcc.msu.su (Kluev)
  1137. Date: Sun, 11 Sep 94 20:36:53 +0400
  1138. Organization: (none)
  1139.  
  1140. In article <34ncvp$4ji@unix.sri.com>
  1141. mxmora@unix.sri.com (Matt Mora) wrote:
  1142.  
  1143. > In article <523026979413@jonathan.srcc.msu.su>
  1144. > kluev@jonathan.srcc.msu.su > (Kluev) writes:
  1145. > >compatible solution is the one suggested by someone else: keep your
  1146. > >own list of windows in addition to standard one
  1147. > >(FrontWindow()-> nextWindow-> nextWindow-> ...).
  1148. > I have missed most of the thread but if its about seeing if the
  1149. window
  1150. > is yours or not I usally add a field called magicSig and stuff that
  1151. with
  1152. > The app signature or something. So you can tell a window is yours by
  1153. > doing the windowPeek->magicSig == mySig trick. 
  1154.  
  1155. This works of course under current Mac ToolBox/OS. This will work in
  1156. near future also. But this couldn't be treated as a good long-term
  1157. solution:
  1158.  
  1159. 1. Nobody guarantees that system windows will not have magicSig after
  1160.    their DialogRecord/WindowRecord.
  1161. 2. Future OS may have intelligent memory protection, so you will not
  1162.    be able to write or read from locations beyond memory blocks.
  1163. 3. Future Toolbox may switch from WindowRecords to WindowRefcons, so
  1164.    you wont be able to concatenate there your data. (You may emulate
  1165.    this future feature right now: pass NIL as a first parameter to
  1166.    NewDialog/NewWindow.)
  1167.  
  1168. Again, all this (except 1) is about mystical "future OS".
  1169.  
  1170. Michael Kluev.
  1171.  
  1172.  
  1173. +++++++++++++++++++++++++++
  1174.  
  1175. >From ivan_cavero_belaunde@avid.com (Ivan Cavero Belaunde)
  1176. Date: 12 Sep 1994 11:28:41 GMT
  1177. Organization: Avid Technology, Inc.
  1178.  
  1179. In article <9668AA95E453.201F4@klkmac004.nada.kth.se>, h+@nada.kth.se (Jon
  1180. W{tte) wrote:
  1181. > In article <0019C298.fc@bmug.org>,
  1182. > Ron_Hunsinger@bmug.org (Ron Hunsinger) wrote:
  1183. > >>Incidentally, you probably only want to use Ivan's handle check in
  1184. > >>debugging code, not in shipping code: HandleZone() doesn't come for
  1185. > >>free.
  1186. > >And if you were a ship-builder, I suppose your ships would only be 
  1187. > >equipped with life boats while you tested them in the harbor, but you 
  1188. > >would remove all that extra baggage before sending them out to sea?  
  1189.  
  1190. That's a bit harsh; Rich's remark is on target - I believe HandleZone
  1191. involves walking through a zone's master pointer list. It's pretty costly.
  1192.  
  1193. > If you were a ship builder, would you equip the release version 
  1194. > of your ship with helocopters, VTOL jets, lifeboats AND an 
  1195. > inflatable cruiser, each capable of holding twice the capacity 
  1196. > of the original ship?
  1197. > ...
  1198. > HandleZone, however, or RecoverHandle, are so expensive that 
  1199. > you shouldn't use them in production code unless totally 
  1200. > necessary.
  1201.  
  1202. Actually, I avoid hard and fast rules with the ValidHandle routine.
  1203. Depending on how the likelihood (which is related to how you got the
  1204. "handle") that you got a fake handle, the necessity of it being a handle
  1205. (are you going to pass it to the toolbox as one?), how often the code
  1206. would be called (if it's called once in a blue moon ValidHandle ain't that
  1207. expensive) and the time-consumingness (ack, bad word) of the rest of the
  1208. operation. In other words, it's a judgment call. That being said, Rich and
  1209. Jon are dead on, Valid Handle is way expensive. I keep a ValidHandle and a
  1210. ValidHandleSafe that I choose among - ValidHandle has the HandleZone
  1211. routine #ifdef DEBUG'd out.
  1212.  
  1213. -Ivan
  1214. - --
  1215. Ivan Cavero Belaunde (ivan_cavero_belaunde@avid.com)
  1216. Avid VideoShop Lead
  1217. Avid Technology, Inc.
  1218. Disclaimer:  All views expressed are entirely my own and do not
  1219. reflect  the opinions of Avid Technology, Inc.
  1220.  
  1221. +++++++++++++++++++++++++++
  1222.  
  1223. >From besbris@jeeves.ucsd.edu (David Besbris)
  1224. Date: 15 Sep 1994 17:40:51 GMT
  1225. Organization: University of California at San Diego
  1226.  
  1227. I usually do append stuff to the windowptr, but if you want to be REALLY
  1228. anal...
  1229.     You can keep your own linked list of your window like:
  1230.  
  1231.           Type
  1232.               NodePtr = ^ NodeRec;
  1233.                      NodeRec =
  1234.             record of
  1235.                 AWindow : WindowPtr;
  1236.                 MyData    : Handle;
  1237.                 Link    : NodePtr;
  1238.             end;
  1239.             
  1240. And then when you want to know if a window is yours just search the list
  1241. to get your data. The overhead of this is really quite small, and it can
  1242. insulate you from all of the worries of using the refcons or appending
  1243. data directly to a structure that you pass to the system.
  1244.  
  1245.  
  1246. My 2 cents,
  1247.  
  1248. Dave
  1249.  
  1250. besbris@jeeves.ucsd.edu
  1251.  
  1252.  
  1253. ---------------------------
  1254.  
  1255. >From westwig@msc.cornell.edu (Erik Anton Westwig)
  1256. Subject: Dialogs and (de)activate events
  1257. Date: Wed, 14 Sep 1994 11:54:07 -0500
  1258. Organization: Cornell University
  1259.  
  1260. Here's a HIG type question for 'ya
  1261.  
  1262. The frontmost window has some active text in it.
  1263. The user then does something to bring up a dialog.
  1264.  
  1265. When should I deactivate the text? 
  1266.  
  1267. I looked at ThinkC 5 and it wasn't even consistent with itself:
  1268. 1. if you bring up the About ThinkC box with text selected in the editor,
  1269. it
  1270.    WILL NOT deselect the text.
  1271. 2. But if you choose New in the File Menu, it WILL deselect it.
  1272.  
  1273. I then looked at TeachText which I figured would follow whatever Apple
  1274. wanted
  1275. programmers to do, and it didn't deselect the text when a dialog was
  1276. brought
  1277. up.
  1278.  
  1279. This seems backwards to me, since in other parts of IM vol I, it tells you
  1280. explicitly to deselect text when a window is not in the front.  So which is
  1281. it (and why)?
  1282.  
  1283. Also since you aren't going to receive a deactivate event in your app when
  1284. you 
  1285. use a Modal dialog, you will need to call the whatever deactivation routin
  1286. within your dialog routine (right?).  Is this different for a modless box?
  1287.  
  1288. Thanks for the advice,
  1289. ERIK
  1290. -- 
  1291. "IT's over to you..."
  1292.  
  1293. +++++++++++++++++++++++++++
  1294.  
  1295. >From Jens Alfke <jens_alfke@powertalk.apple.com>
  1296. Date: Wed, 14 Sep 1994 21:29:25 GMT
  1297. Organization: Apple Computer
  1298.  
  1299. Erik Anton Westwig, westwig@msc.cornell.edu writes:
  1300. > The frontmost window has some active text in it.
  1301. > The user then does something to bring up a dialog.
  1302. > When should I deactivate the text? 
  1303.  
  1304. Always. You should disable the active window when a dialog appears and
  1305. re-enable it when it goes away. It takes a little bit of extra effort to do
  1306. this, and apps are pretty inconsistent about doing it.
  1307.  
  1308. Note that if the dialog applies to the current selection, you may want to
  1309. display a "dimmed" selection when the window is inactive, so the user can
  1310. still tell what area is selected.
  1311.  
  1312. > Also since you aren't going to receive a deactivate event in your app when
  1313. > you 
  1314. > use a Modal dialog, you will need to call the whatever deactivation routin
  1315. > within your dialog routine (right?).  Is this different for a modless box?
  1316.  
  1317. You do actually get a deactivate event, but the modal dialog ignores it by
  1318. default because it doesn't know diddly about your document windows. To get
  1319. the event yourself, use a modal dialog filter and watch for activate events.
  1320. When you get one for a document window, do the right thing. This also applies
  1321. to update events; that way your document windows will still update while
  1322. there is a dialog up (let's say a screen saver kicked in...)
  1323.  
  1324. --Jens Alfke                           jens_alfke@powertalk.apple.com
  1325.                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  1326.  
  1327. +++++++++++++++++++++++++++
  1328.  
  1329. >From bb@lightside.com (Bob Bradley)
  1330. Date: Tue, 13 Sep 1994 05:23:23 -0800
  1331. Organization: SS Software Inc.
  1332.  
  1333. In article <westwig-140994115407@cu-dialup-0039.cit.cornell.edu>,
  1334. westwig@msc.cornell.edu (Erik Anton Westwig) wrote:
  1335.  
  1336. > Here's a HIG type question for 'ya
  1337. > The frontmost window has some active text in it.
  1338. > The user then does something to bring up a dialog.
  1339. > When should I deactivate the text? 
  1340.  
  1341. I always thought it was stupid that calling StandardGetFile wouldn't
  1342. generate an activate event for the window it's coming in front of and even
  1343. worse, it's inconsistant, since the window itself (the part the window
  1344. manager handles for you) is deactivated (ie. the drag region is changed to
  1345. inactivate state) but, a deactivate event isn't generated.
  1346.  
  1347. What I do is isolate all my activate/deactivate code into a single
  1348. HandleActivate routine that will normally be called when I receive an
  1349. activate event. Then if I'm going to put up a dialog (like StandardFile)
  1350. that doesn't generate an activate event, I'll manually call HandleActivate
  1351. for that frontmost window (since it's the only one that would be active).
  1352.  
  1353. For your own dialogs, calling ShowWindow before calling ModalDialog should
  1354. generate the deactivate event for the previous frontmost window.
  1355.  
  1356. ---------------------------
  1357.  
  1358. >From mmah@alias.com (Ming Mah)
  1359. Subject: Lets talk OpenDoc
  1360. Date: Thu, 18 Aug 1994 14:28:06 GMT
  1361. Organization: Alias Research Inc., Toronto ON Canada
  1362.  
  1363. Hi gang,
  1364.  
  1365. I have not seen a discussion thread about OpenDoc, and I wanted to
  1366. start one up with some initial impressions that I had.
  1367.  
  1368. I saw the discussion about OLE being bundled in the August issue
  1369. of MacTech, and I went to pick it up.  I also read about being able
  1370. to get a copy of the OpenDoc alpha CD by sending some mail to
  1371. OPENDOC@applelink.apple.com, and so I did that as well (and I have
  1372. to say I am really impressed with Apple in that regards.  I sent
  1373. out my request on Friday, and by Tuesday I had received the OpenDoc
  1374. CD ... with all the discussion about getting the CD (I know, it
  1375. branched off into a general tirade about Apple's SDK policies) I
  1376. have to say this was VERY impressive).
  1377.  
  1378. Any ways, on to what I wanted to say.  I first installed the OLE
  1379. stuff, and tried to play around with the sample applications that
  1380. were included, and I have to admit that I was really confused about
  1381. just what Microsoft was trying to show, and how to go about doing
  1382. anything useful at all.  After exploring the CD a bit, I came across
  1383. an 'OLE vs. OpenDoc' discussion, and things were pretty much downhill
  1384. from there.  The document has tons of (I think) uncalled for jabs at
  1385. OpenDoc, and a lot of defensiveness about design differences between
  1386. the two technologies.
  1387.  
  1388. The impression I had with OLE is that it is an enabling technology
  1389. to allow for document centric inter-application communications.
  1390. I could not get a very nice feel for "in-place" editting as the few
  1391. things I tried (an Excel spreadsheet, and embedding a QuickTime movie)
  1392. both ended up launching seperate applications (Excel and a QuickTime
  1393. movie player).  In order to even play the movie, I had to switch over
  1394. to another application to get it started, although once started it
  1395. did play within my document.
  1396.  
  1397. OpenDoc though seems to be a tremendous leap forward with the Macintosh
  1398. "user experience" (I have come to REALLY like that phrase).  OpenDoc
  1399. is layered on top of Drag-and-drop and shared libraries (although
  1400. apparently the shared library stuff will go away).  The OpenDoc
  1401. application itself is only 20K !!
  1402.  
  1403. Viewing and editing "parts" is very intuitive (well almost, I did
  1404. have to dig a little bit to find out about pressing command to
  1405. move a part around, as opposed to activating it).  And the interaction
  1406. with the Finder was really nice.
  1407.  
  1408. All part editing happened within the document, and it was kind of neat
  1409. to see the menus switching as I went from part to part.  A QuickTime
  1410. movie is embedded by opening a QuickTime part editor (which does not
  1411. seem "right" to me), but the movie itself was embedded directly in
  1412. my document, and playing the movie is done by activating the badge.
  1413.  
  1414. Back to the 'OLE vs. OpenDoc' discussion on the OLE CD.  OLE seems to
  1415. me to be just a protocol for inter-application communications (I know
  1416. "just" is a rather harsh and over-simple word), whereas OpenDoc
  1417. encompasses a lot more than that.  OpenDoc is tightly integrated within
  1418. the Macintosh experience (again, it was just "right" to drag a piece
  1419. of text to the trash, and have it removed from my document), and is
  1420. a well thought out extension to it.
  1421.  
  1422. OpenDoc also includes some really neat file support tools, especially
  1423. the draft version-ability.  I thought that it again just shows a lot
  1424. of thought and attention to what users want to do with a document.
  1425.  
  1426. Well, these were just my first impressions, and if you have not already,
  1427. I would urge you to take a look at both technologies (especially since
  1428. they can be gotten for almost free (OpenDoc IS free)).  I am starting
  1429. to feel realy warm and fuzzy with OpenDoc, and I would be interested
  1430. in continued discussions about OpenDoc part development.
  1431.  
  1432. Have fun.
  1433. Ming
  1434.  
  1435. +++++++++++++++++++++++++++
  1436.  
  1437. >From hanrek@cts.com (Mark Hanrek)
  1438. Date: 18 Aug 1994 22:15:21 GMT
  1439. Organization: The Information Workshop
  1440.  
  1441.  
  1442. Ming,
  1443.  
  1444. I had the exact same identical experience, and assessment, as you did.
  1445.  
  1446. Microsoft may have put the stuff in our hands NOW, and for FREE, but I
  1447. could not make heads or tails of where to start to dive in.  There was no
  1448. read-me that was the big arrow pointing to "Start Here".   A fatal
  1449. mistake.
  1450.  
  1451. Also, the "OpenDoc vs. OLE: Information for Customers" thing was filled
  1452. with unprofessional "jabs" as you rightly called them, and this makes it
  1453. obvious that a certain entity feels a little insecure, and will resort to
  1454. mud-slinging, since there must be little to point to which can stand on
  1455. its own.
  1456.  
  1457. Hmmmmm.
  1458.  
  1459. Mark Hanrek
  1460. The Information Workshop
  1461.  
  1462. +++++++++++++++++++++++++++
  1463.  
  1464. >From rob@eats.com (Rob Newberry)
  1465. Date: Thu, 18 Aug 1994 18:34:34 UNDEFINED
  1466. Organization: Education and Technology Solutions
  1467.  
  1468. >Microsoft may have put the stuff in our hands NOW, and for FREE, but I
  1469. >could not make heads or tails of where to start to dive in.  There was no
  1470. >read-me that was the big arrow pointing to "Start Here".   A fatal
  1471. >mistake.
  1472.  
  1473. My goodness.  You get a free bunch of code, and you want someone to step you 
  1474. through the whole thing too?  Come on!
  1475.  
  1476. If you want to learn about the OLE stuff on the CD, take a look at the 
  1477. Microsoft Press book, "Inside OLE 2".  It is primarily Windows-oriented, but 
  1478. the OLE code is (FTMP) well explained and portable.
  1479.  
  1480. >Also, the "OpenDoc vs. OLE: Information for Customers" thing was filled
  1481. >with unprofessional "jabs" as you rightly called them, and this makes it
  1482. >obvious that a certain entity feels a little insecure, and will resort to
  1483. >mud-slinging, since there must be little to point to which can stand on
  1484. >its own.
  1485.  
  1486. Didn't read it.  I'm not surprised, though...
  1487.  
  1488. Rob
  1489.  
  1490.  
  1491.  
  1492. +++++++++++++++++++++++++++
  1493.  
  1494. >From nick+@pitt.edu ( nick.c )
  1495. Date: Thu, 18 Aug 94 23:19:42 GMT
  1496. Organization: The Pitt, Chemistry
  1497.  
  1498. In Article <hanrek-1808941517260001@auke.cts.com>, hanrek@cts.com (Mark
  1499. Hanrek) wrote:
  1500.  
  1501. >Microsoft may have put the stuff in our hands NOW, and for FREE, but I
  1502. >could not make heads or tails of where to start to dive in.  There was no
  1503.  
  1504.  
  1505.     For what it's worth, Apple will put OpenDoc in your hands now
  1506.       and free too.  After the initial flurry regarding the MacTech
  1507.       distribution of OLE, I responded to Tre's suggestion that anyone
  1508.       who was interested could get the equivalent OpenDoc SDK.  
  1509.       Just got the package today, and it's in Alpha release -
  1510.       and I sure haven't figured out enough to comment on the
  1511.       superiority of one or the other.  But the take home lesson
  1512.       is the resources exist to start working on either standard
  1513.       today, and at no cost.  Figure I'll be doing a little reading
  1514.       tonight :-).
  1515.  
  1516.                                             -- nick
  1517.  
  1518.   Disclaimer: Just my opinion.
  1519.                                     _/   _/  _/  _/_/_/   _/   _/  
  1520.      Interet: nick@pitt.edu        _/_/ _/  _/  _/   _/  _/_/_/    
  1521.       eWorld: nick                _/ _/_/  _/  _/       _/ _/      
  1522.          CIS: 71232,766          _/   _/  _/   _/_/_/  _/   _/     
  1523.     
  1524.            "Science is nothing but perception" - Plato
  1525.  
  1526. +++++++++++++++++++++++++++
  1527.  
  1528. >From 103t_english@west.cscwc.pima.edu
  1529. Date: 18 Aug 94 23:22:13 MST
  1530. Organization: (none)
  1531.  
  1532. In article <hanrek-1808941517260001@auke.cts.com>, hanrek@cts.com (Mark Hanrek) writes:
  1533. > Ming,
  1534. > I had the exact same identical experience, and assessment, as you did.
  1535. > Microsoft may have put the stuff in our hands NOW, and for FREE, but I
  1536. > could not make heads or tails of where to start to dive in.  There was no
  1537. > read-me that was the big arrow pointing to "Start Here".   A fatal
  1538. > mistake.
  1539. > Also, the "OpenDoc vs. OLE: Information for Customers" thing was filled
  1540. > with unprofessional "jabs" as you rightly called them, and this makes it
  1541. > obvious that a certain entity feels a little insecure, and will resort to
  1542. > mud-slinging, since there must be little to point to which can stand on
  1543. > its own.
  1544. > Hmmmmm.
  1545.  
  1546. What I found fasckinatin was the review/comparison given in MacTech Journal.
  1547.  
  1548. I noted a certain assumption that everyone must use C++ and that all vendors
  1549. must use the same object format and that the overall feel of OLE vs OpenDOc was
  1550. a tie as far as H-I concerns were concerned, etc.
  1551.  
  1552. Even though I'm not competent to refute any of his observations,  I felt that
  1553. the tone of the article was "Microsoft paid me to write this and so I'm putting
  1554. it in the best possible light."
  1555.  
  1556.  
  1557. Anyone else get this feeling?
  1558.  
  1559.  
  1560. Lawson
  1561.  
  1562. +++++++++++++++++++++++++++
  1563.  
  1564. >From Ken Prehoda <kenp@nmrfam.wisc.edu>
  1565. Date: 19 Aug 1994 16:57:26 GMT
  1566. Organization: Univ of Wisc-Madison
  1567.  
  1568. In article <1994Aug18.232213@west.cscwc.pima.edu> ,
  1569. 103t_english@west.cscwc.pima.edu writes:
  1570. >Even though I'm not competent to refute any of his observations,  I felt
  1571. that
  1572. >the tone of the article was "Microsoft paid me to write this and so I'm
  1573. putting
  1574. >it in the best possible light."
  1575. >
  1576. >
  1577. >Anyone else get this feeling?
  1578.  
  1579. I got the same feeling.  I was definitely surprised at the authors
  1580. SOM-bashing.  I am not that familiar with SOM but have heard good things.
  1581. The author of the MacTech article made it sound as if SOM was completely
  1582. unacceptable.
  1583.  
  1584. Are there any unbiased opinions on SOM vs. COM?
  1585.  
  1586. -Ken Prehoda
  1587. kenp@nmrfam.wisc.edu
  1588.  
  1589. +++++++++++++++++++++++++++
  1590.  
  1591. >From h+@nada.kth.se (Jon W{tte)
  1592. Date: Fri, 19 Aug 1994 22:27:21 +0200
  1593. Organization: Royal Institute of Something or other
  1594.  
  1595. In article <1994Aug18.232213@west.cscwc.pima.edu>,
  1596. 103t_english@west.cscwc.pima.edu wrote:
  1597.  
  1598. >I noted a certain assumption that everyone must use C++ and that all vendors
  1599. >must use the same object format
  1600.  
  1601. Uh, not under OpenDoc you don't have to. OpenDoc will layer on 
  1602. top of SOM, which is language neutral and even provides network 
  1603. transparency in DSOM.
  1604.  
  1605. However, the current _ALPHA_ release uses the ASLM which 
  1606. demands either MPW C++ _or_ SC++ for MPW for the entire build.
  1607.  
  1608. >and that the overall feel of OLE vs OpenDOc was
  1609. >a tie as far as H-I concerns were concerned, etc.
  1610.  
  1611. Simply not true, as anyone who has tried to create and edit a 
  1612. composite document in OLE 2 versus OpenDoc will tell you.
  1613.  
  1614. Cheers,
  1615.  
  1616.  
  1617.                 / h+
  1618.  
  1619.  
  1620. --
  1621.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  1622.  
  1623. "TextEdit does everything right."
  1624.     — Jon W{tte
  1625.  
  1626.  
  1627. +++++++++++++++++++++++++++
  1628.  
  1629. >From h+@nada.kth.se (Jon W{tte)
  1630. Date: Fri, 19 Aug 1994 22:27:23 +0200
  1631. Organization: Royal Institute of Something or other
  1632.  
  1633. In article <rob.308.005C70F3@eats.com>,
  1634. rob@eats.com (Rob Newberry) wrote:
  1635.  
  1636. >My goodness.  You get a free bunch of code, and you want someone to step you 
  1637. >through the whole thing too?  Come on!
  1638.  
  1639. You DO get that on the OpenDoc CD. It has lots of useful 
  1640. recepies for various things, and also comes with PartMaker, 
  1641. which generates a part shell for you which you can extend.
  1642.  
  1643. Cheers,
  1644.  
  1645.                 / h+
  1646.  
  1647.  
  1648. --
  1649.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  1650.  
  1651. "TextEdit does everything right."
  1652.     — Jon W{tte
  1653.  
  1654.  
  1655. +++++++++++++++++++++++++++
  1656.  
  1657. >From mmah@alias.com (Ming Mah)
  1658. Date: Fri, 19 Aug 1994 21:08:23 GMT
  1659. Organization: Alias Research, Inc., Toronto ON Canada
  1660.  
  1661. In <1994Aug18.232213@west.cscwc.pima.edu> 103t_english@west.cscwc.pima.edu writes:
  1662.  
  1663. >What I found fasckinatin was the review/comparison given in MacTech Journal.
  1664.  
  1665. >I noted a certain assumption that everyone must use C++ and that all vendors
  1666. >must use the same object format and that the overall feel of OLE vs OpenDOc was
  1667. >a tie as far as H-I concerns were concerned, etc.
  1668.  
  1669. >Even though I'm not competent to refute any of his observations,  I felt that
  1670. >the tone of the article was "Microsoft paid me to write this and so I'm putting
  1671. >it in the best possible light."
  1672.  
  1673.  
  1674. >Anyone else get this feeling?
  1675.  
  1676.  
  1677. >Lawson
  1678.  
  1679.  
  1680. Hi Lawson,
  1681.  
  1682. Yes, that was the same feeling I had.  In terms of H-I, OpenDoc is
  1683. really easy to use, and feels very natural (although A LOT of this
  1684. has to do with drag-and-drop).  Editing in place feels really nice
  1685. with OpenDoc, and although it may have been just that OLE was not
  1686. set up with workable demos, launching Excel to edit a spreadsheet
  1687. somehow just does not feel the same.
  1688.  
  1689. A major "argument" that I saw in the MacTech review was the
  1690. underlying support architecture, and the way OpenDoc's SOM was
  1691. described sounded really intimidating to me.  Now currently
  1692. the OpenDoc Alpha uses Shared Libraries (which I do not know
  1693. how to create either), and PartMaker creates all the necessary
  1694. configuration files (including make files and such) so I would
  1695. suspect that when OpenDoc goes SOM that the same thing would
  1696. happen.  I am sure that if someone HAD to get down and dirty
  1697. that SOM-ness (or whatever) could be scary, but so far (and
  1698. I have a very simple part running after only playing around
  1699. for two days) I have NOT run into any difficulties at all,
  1700. let alone any of the nature that were speculated upon in
  1701. the review article.
  1702.  
  1703. The review does feel really very much as if it was written
  1704. by Microsoft, and not by someone who has used OpenDoc much
  1705. (if at all !!).  I still really feel that the document
  1706. structure file support (for things like drafts and mostly
  1707. transparent access to drag-and-drop and links) is a cool
  1708. feature of OpenDoc way beyond a simple IAC interface.
  1709.  
  1710. Have fun.
  1711. Ming
  1712.  
  1713. +++++++++++++++++++++++++++
  1714.  
  1715. >From nagle@netcom.com (John Nagle)
  1716. Date: Sat, 20 Aug 1994 04:44:10 GMT
  1717. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  1718.  
  1719. 103t_english@west.cscwc.pima.edu writes:
  1720. >What I found fasckinatin was the review/comparison given in MacTech Journal.
  1721. >I noted a certain assumption that everyone must use C++ and that all vendors
  1722. >must use the same object format and that the overall feel of OLE vs OpenDOc was
  1723. >a tie as far as H-I concerns were concerned, etc.
  1724.  
  1725. >Even though I'm not competent to refute any of his observations,  I felt that
  1726. >the tone of the article was "Microsoft paid me to write this and so I'm putting
  1727. >it in the best possible light."
  1728. >Anyone else get this feeling?
  1729.  
  1730.      I didn't get that feeling.  The Microsoft position is much stronger,
  1731. and can be found in "White Papers:Point CounterPoint" on the OLE CD-ROM.
  1732.  
  1733.      OLE is definitely C++ oriented; it knows about C++ vtables.  
  1734. OpenDoc bought into IBM's System Object Model, which is language-neutral,
  1735. sort of.  The languages have to know about SOM, or at least it works 
  1736. better if they do. 
  1737.  
  1738.      A more fundamental problem is that all this machinery exists mostly
  1739. so you can embed different documents in your word processor and still
  1740. edit them with appropriate tools.  It's sort of "Publish and Subscribe,
  1741. The Next Generation".  Yes, you can do other stuff, but the touted
  1742. advantage is mostly for integrated documents.  It's all focused on 
  1743. what documents look like, not what they mean.  Is that really worth all 
  1744. this complexity?  
  1745.  
  1746.                     John Nagle
  1747.  
  1748. +++++++++++++++++++++++++++
  1749.  
  1750. >From 103t_english@west.cscwc.pima.edu
  1751. Date: 20 Aug 94 00:50:01 MST
  1752. Organization: (none)
  1753.  
  1754. In article <nagleCutH5M.1w1@netcom.com>, nagle@netcom.com (John Nagle) writes:
  1755. > 103t_english@west.cscwc.pima.edu writes:
  1756. >>What I found fasckinatin was the review/comparison given in MacTech Journal.
  1757. >>I noted a certain assumption that everyone must use C++ and that all vendors
  1758. >>must use the same object format and that the overall feel of OLE vs OpenDOc was
  1759. >>a tie as far as H-I concerns were concerned, etc.
  1760. >>Even though I'm not competent to refute any of his observations,  I felt that
  1761. >>the tone of the article was "Microsoft paid me to write this and so I'm putting
  1762. >>it in the best possible light."
  1763. >>Anyone else get this feeling?
  1764. >      I didn't get that feeling.  The Microsoft position is much stronger,
  1765. > and can be found in "White Papers:Point CounterPoint" on the OLE CD-ROM.
  1766. >      OLE is definitely C++ oriented; it knows about C++ vtables.  
  1767. > OpenDoc bought into IBM's System Object Model, which is language-neutral,
  1768. > sort of.  The languages have to know about SOM, or at least it works 
  1769. > better if they do. 
  1770. >      A more fundamental problem is that all this machinery exists mostly
  1771. > so you can embed different documents in your word processor and still
  1772. > edit them with appropriate tools.  It's sort of "Publish and Subscribe,
  1773. > The Next Generation".  Yes, you can do other stuff, but the touted
  1774. > advantage is mostly for integrated documents.  It's all focused on 
  1775. > what documents look like, not what they mean.  Is that really worth all 
  1776. > this complexity?  
  1777. >                     John Nagle
  1778.  
  1779.  
  1780. So, is the complexity for the programmer or for the user, and just who is more
  1781. important?
  1782.  
  1783.  
  1784. Lawson
  1785.  
  1786. +++++++++++++++++++++++++++
  1787.  
  1788. >From philip@cs.uct.ac.za (Philip Machanick)
  1789. Date: 20 Aug 1994 14:40:56 +0200
  1790. Organization: Computer Science Department, University of Cape Town
  1791.  
  1792. Ming Mah (mmah@alias.com) wrote:
  1793. : I saw the discussion about OLE being bundled in the August issue
  1794. : of MacTech, and I went to pick it up.  I also read about being able
  1795. : to get a copy of the OpenDoc alpha CD by sending some mail to
  1796. : OPENDOC@applelink.apple.com, and so I did that as well (and I have
  1797. : to say I am really impressed with Apple in that regards.  I sent
  1798. : out my request on Friday, and by Tuesday I had received the OpenDoc
  1799.  
  1800. Took a little longer in my case, but I am on a different continent and
  1801. they sent it DHL at their expense. I haven't seen the OLE CD yet - if
  1802. anyone wants to get rid of theirs, let me know (I don't mind if you can't
  1803. afford DHL :). If so please send mail to philipm@is.co.za - my regular
  1804. mail server is broken.
  1805.  
  1806. : CD ... with all the discussion about getting the CD (I know, it
  1807. : branched off into a general tirade about Apple's SDK policies) I
  1808. : have to say this was VERY impressive).
  1809. [...]
  1810. : Back to the 'OLE vs. OpenDoc' discussion on the OLE CD.  OLE seems to
  1811. : me to be just a protocol for inter-application communications (I know
  1812. : "just" is a rather harsh and over-simple word), whereas OpenDoc
  1813. : encompasses a lot more than that.  OpenDoc is tightly integrated within
  1814. : the Macintosh experience (again, it was just "right" to drag a piece
  1815. : of text to the trash, and have it removed from my document), and is
  1816. : a well thought out extension to it.
  1817.  
  1818. I wonder what there is in it for Microsoft to wholeheartedly embrace
  1819. the concept of lots of small plug and play editors. Microsoft relies
  1820. on selling big bloated apps for income.
  1821.  
  1822. Apple has always been a paradigm-shift company - even if they
  1823. sometimes forget this - whereas Microsoft is a kludge-shift
  1824. company. Apple has an inherent need to push new ways of doing things
  1825. as a selling point for a minority platform. Microsoft has to please
  1826. conservative managers by pretending they aren't changing the way
  1827. things are done, just covering corporate asses by filling out the
  1828. feature list as fully as possible. This leads to gigantic monolithic
  1829. apps. It's hard to see how MS Word, Excel etc. fit into a
  1830. document centric world.
  1831.  
  1832. That's partly why I would like to check out the OLE CD. Is it
  1833. really document centric - or is it just a way of embedding
  1834. pieces of other apps' documents in one app's documents?
  1835. --
  1836. Philip Machanick                      philip@cs.wits.ac.za
  1837. Computer Science Department, University of he Witwatesrand
  1838. 2050 Wits, South Africa 27(11)716-3309 fax 339-7965
  1839. (at University of Cape Town until November: 27(21)650-4058)
  1840.  
  1841. +++++++++++++++++++++++++++
  1842.  
  1843. >From sandvik@apple.com (Kent Sandvik)
  1844. Date: Sat, 20 Aug 1994 19:16:32 GMT
  1845. Organization: Dr. Stupid Meets Frankenstein
  1846.  
  1847. In article <334tko$jjq@cs.uct.ac.za>
  1848. philip@cs.uct.ac.za (Philip Machanick) writes:
  1849.  
  1850. > Apple has always been a paradigm-shift company - even if they
  1851. > sometimes forget this - whereas Microsoft is a kludge-shift
  1852. > company. Apple has an inherent need to push new ways of doing things
  1853. > as a selling point for a minority platform. Microsoft has to please
  1854. > conservative managers by pretending they aren't changing the way
  1855. > things are done, just covering corporate asses by filling out the
  1856. > feature list as fully as possible. This leads to gigantic monolithic
  1857. > apps. It's hard to see how MS Word, Excel etc. fit into a
  1858. > document centric world.
  1859. > That's partly why I would like to check out the OLE CD. Is it
  1860. > really document centric - or is it just a way of embedding
  1861. > pieces of other apps' documents in one app's documents?
  1862.  
  1863. You are on the right track, a lot of the OLE versus OpenDoc has to do
  1864. with techno-political, strategic games. Microsoft would not like to
  1865. loose the lucrative market of selling base applications to office
  1866. environments. Imagine a future where anyone could buy cheaper
  1867. components and put together their favourite environment. The content is
  1868. the content, and the tools are the tools.
  1869.  
  1870. There will of course be a nice market for companies that bundle part
  1871. handlers so the end result is indeed a classical application. However
  1872. Microsoft would no longer have full control of their base line
  1873. application offerings, and that's something they don't want to loose.
  1874. Thus their technical drive behind OLE is more to make sure that
  1875. applications offer OLE support, and of course their applications are
  1876. the prime OLE engines. 
  1877.  
  1878. Think about this next time you read technical blurbs from Microsoft
  1879. about OLE. Anyway, private comments. I would rather see a world where
  1880. all kinds of companies are allowed to compete on the application arena,
  1881. instead of having one single big company dictate the rules.
  1882.  
  1883. Cheers, Kent
  1884.  
  1885. Kent Sandvik, Apple Computer Inc. sandvik@apple.com
  1886. --Private activities on the net --
  1887.  
  1888. +++++++++++++++++++++++++++
  1889.  
  1890. >From michael@elwing.otago.ac.nz (Michael(tm) Hamel)
  1891. Date: Sat, 20 Aug 1994 21:06:17 GMT
  1892. Organization: University of Otago
  1893.  
  1894. 103t_english@west.cscwc.pima.edu wrote:
  1895.  
  1896. > I noted a certain assumption that everyone must use C++ and that all vendors
  1897. > must use the same object format and that the overall feel of OLE vs OpenDOc was
  1898. > a tie as far as H-I concerns were concerned, etc.
  1899.  
  1900. What really gets me about OpenDoc is that its another factor thats going to
  1901. push my company off the Macintosh.
  1902.  
  1903. We have a substantial code base written in Object Pascal. Apple are saying to
  1904. us, "Hey, rewrite everything in C++ in this entirely different way and thats
  1905. the future". The trouble is, thats exactly the effort required to put us on
  1906. Windows. Now, I believe, and I'm sure you'll agree, that moving to OpenDoc
  1907. would be a much "nicer" thing to do and would produce a better user experience,
  1908. etc. But it requires us to trust the Apple who brought us MacApp and BedRock
  1909. with an awfully similar-looking exercise. And we just can't afford to do that.
  1910. Maybe in twelve or eighteen months it will be clearer that we can, but we may
  1911. have to commit ourselves before then. To Windows.
  1912.  
  1913. --
  1914. Michael(tm) Hamel                           ADInstruments, Dunedin, New Zealand
  1915. michael@otago.ac.nz
  1916.  
  1917. "The Galaxy's a fun place. You'll need to have this fish in your ear."
  1918.  
  1919. +++++++++++++++++++++++++++
  1920.  
  1921. >From 103t_english@west.cscwc.pima.edu
  1922. Date: 20 Aug 94 16:51:02 MST
  1923. Organization: (none)
  1924.  
  1925. In article <CuuqMI.BMJ@news.otago.ac.nz>, michael@elwing.otago.ac.nz (Michael(tm) Hamel) writes:
  1926. > 103t_english@west.cscwc.pima.edu wrote:
  1927. >> I noted a certain assumption that everyone must use C++ and that all vendors
  1928. >> must use the same object format and that the overall feel of OLE vs OpenDOc was
  1929. >> a tie as far as H-I concerns were concerned, etc.
  1930. > What really gets me about OpenDoc is that its another factor thats going to
  1931. > push my company off the Macintosh.
  1932. > We have a substantial code base written in Object Pascal. Apple are saying to
  1933. > us, "Hey, rewrite everything in C++ in this entirely different way and thats
  1934. > the future". The trouble is, thats exactly the effort required to put us on
  1935. > Windows. Now, I believe, and I'm sure you'll agree, that moving to OpenDoc
  1936. > would be a much "nicer" thing to do and would produce a better user experience,
  1937. > etc. But it requires us to trust the Apple who brought us MacApp and BedRock
  1938. > with an awfully similar-looking exercise. And we just can't afford to do that.
  1939. > Maybe in twelve or eighteen months it will be clearer that we can, but we may
  1940. > have to commit ourselves before then. To Windows.
  1941.  
  1942. WHile I don't know that OpenDoc will work with Object Pascal, the fact that it
  1943. is touted as more language-independent than OLE suggest that it should...
  1944.  
  1945. Any OpenDoc gurus/designers lurking?
  1946.  
  1947.  
  1948. Lawson
  1949.  
  1950. +++++++++++++++++++++++++++
  1951.  
  1952. >From hanrek@cts.com (Mark Hanrek)
  1953. Date: 21 Aug 1994 01:08:05 GMT
  1954. Organization: The Information Workshop
  1955.  
  1956. >>
  1957. >> Mark Hanrek said...
  1958. >>
  1959. >> Microsoft may have put the stuff in our hands NOW, and for FREE, but I
  1960. >> could not make heads or tails of where to start to dive in.  There was no
  1961. >> read-me that was the big arrow pointing to "Start Here".   A fatal
  1962. >> mistake.
  1963. In article <rob.308.005C70F3@eats.com>, rob@eats.com (Rob Newberry) wrote:
  1964. >
  1965. > My goodness.  You get a free bunch of code, and you want someone to step you 
  1966. > through the whole thing too?  Come on!
  1967.  
  1968. Rob,
  1969.  
  1970. Boy, you must not work in a business-oriented environment do you? 
  1971.  
  1972. This isn't a "guessing game" we're playing here.  This is business.  Time
  1973. is money.  We take the "path of least resistance" and work on a
  1974. need-to-know basis.  
  1975.  
  1976. And a question business-oriented programmer find themselves asking is...
  1977.  
  1978.    Do you want us to use the technology or not?
  1979.  
  1980.  
  1981. This is why I take advantage of every opportunity to put forth the
  1982. recommendation that Apple, and any other company that wants programmers to
  1983. use their technology and APIs, to take the well-known world of
  1984. "user-interface" and "ease of use" and extend it to programmers, because
  1985. programmers are humans too.
  1986.  
  1987. - ---
  1988.  
  1989. In a separate thread, we noted MacTech's success and praised them, and it
  1990. was mentioned that "if a company cares about the customer, then everything
  1991. else falls into place nicely".
  1992.  
  1993. Likewise, if "programmer-interface" is recognized, and the principles of
  1994. "programmer ease-of-use" are implemented, then everything falls into place
  1995. nicely.  It is a simple way to catch a myriad of things that slow
  1996. programmers down which can easily be eliminated.
  1997.  
  1998. This isn't about making things all nice and pretty and neat for sissy
  1999. programmers.
  2000.  
  2001. It has to do with making it so we can go in, do what we need to do, and
  2002. get the hell out of there because we have to move on to 25 other issues
  2003. and we don't have time to screw around being confused, being predisposed
  2004. to making mistakes that have already been made, encountering bugs that
  2005. have already been found, and asking the same questions over and over and
  2006. over.
  2007.  
  2008. - ---
  2009.  
  2010. If someone at Microsoft had been paying attention to what was going on,
  2011. they wouldn't have forgotten to "guide" the programmer interested in OLE,
  2012. telling them to "start here, play with that, then get into this, then
  2013. graduate to this other thing if you wish, and before you start, here is
  2014. some perspective as to how all these things fit together".
  2015.  
  2016. If someone there truly "cared" about the OLE CD being truly effective,
  2017. they would have discovered this oversight.
  2018.  
  2019. This kind of implies something... that this is what happens when you have
  2020. a bunch of people trained to do only what they are told, and to not ask
  2021. questions, or bother having any "ideas".  :)
  2022.  
  2023. I am glad I am aligned with Macintosh, and OpenDoc.
  2024.  
  2025.  
  2026. Mark Hanrek
  2027. The Information Workshop
  2028.  
  2029. +++++++++++++++++++++++++++
  2030.  
  2031. >From neil_ticktin@xplain.com (Neil Ticktin)
  2032. Date: Sun, 21 Aug 1994 03:42:37 GMT
  2033. Organization: MacTech Magazine/Xplain Corporation
  2034.  
  2035. In article <1994Aug18.232213@west.cscwc.pima.edu>,
  2036. 103t_english@west.cscwc.pima.edu wrote:
  2037.  
  2038. >> Even though I'm not competent to refute any of his observations,  I felt that
  2039. >> the tone of the article was "Microsoft paid me to write this and so I'm
  2040. >> putting it in the best possible light."
  2041. >> 
  2042. >> Anyone else get this feeling?
  2043.  
  2044. Lawson,
  2045.  
  2046. Rest assured that at the time of writing the article, Jeff Alger was
  2047. independent from both Apple and Microsoft.  In fact, we checked with both
  2048. companies to see if Jeff was a "fair" choice before embarking on the
  2049. article.  Both gave their "ok".
  2050.  
  2051. Jeff wrote an article that a lot of people agree with and a lot of people
  2052. disagree with.  The important thing is that Jeff worked with both sets of
  2053. software just as any developer would and then wrote up his opinions. 
  2054. Jeff, as you know, liked OLE better.  Why?  Because he found it easier to
  2055. work with and did not like SOM.
  2056.  
  2057. Realize that Jeff's opinion on SOM is just that, an opinion.  I personally
  2058. don't agree with it from what I've heard, but I feel strongly that people
  2059. are entitled to their opinion.  Jeff's also spent more time working with
  2060. the stuff than a lot of people have.
  2061.  
  2062. Also realize that Jeff was working with whatever was available at the
  2063. time.  Documentation and tools for OpenDoc and OLE have been moving very
  2064. quickly.  The articles were written back in the June timeframe and things
  2065. are much different already.  Jeff based his comments on what he saw at
  2066. that moment in time, not promises for the future.
  2067.  
  2068. One last thing.  Even though Jeff favored OLE, he took a bunch of jabs at
  2069. it.  Microsoft had enough respect for Jeff's comments that they've now
  2070. offered him a job.  They seem to be truly interested in making their
  2071. product better.  This all came to pass AFTER the article was published,
  2072. let alone written.
  2073.  
  2074. In the end, I believe that OpenDoc will win because the technology, I
  2075. think, is cool and is better integrated.  But, Microsoft is putting up one
  2076. hell of a fight in the mean time.
  2077.  
  2078. Our goal at MacTech was to put the technology and concepts in your hands. 
  2079. As a developer, the choice is up to you.  Hope it was of help.
  2080.  
  2081. Thanks,
  2082.  
  2083. Neil Ticktin
  2084. MacTech Magazine
  2085.  
  2086. - ---------------------------------------------------------------------
  2087.            Neil Ticktin, MacTech Magazine (formerly MacTutor)
  2088. PO Box 250055, Los Angeles, CA 90025 * 310-575-4343 * Fax: 310-575-0925
  2089.  For more info, anonymous ftp to ftp.netcom.com and cd to /pub/xplain
  2090.   custservice@xplain.com * editorial@xplain.com * adsales@xplain.com
  2091. marketing@xplain.com * accounting@xplain.com * pressreleases@xplain.com
  2092.    progchallenge@xplain.com * publisher@xplain.com * info@xplain.com
  2093.  
  2094. +++++++++++++++++++++++++++
  2095.  
  2096. >From quinn@cs.uwa.edu.au (Quinn "The Eskimo!")
  2097. Date: Sun, 21 Aug 1994 15:06:39 +0800
  2098. Organization: Department of Computer Science, The University of Western Australia
  2099.  
  2100. In article <CuuqMI.BMJ@news.otago.ac.nz>, michael@elwing.otago.ac.nz
  2101. (Michael(tm) Hamel) wrote:
  2102.  
  2103. >We have a substantial code base written in Object Pascal. Apple are saying to
  2104. >us, "Hey, rewrite everything in C++ in this entirely different way and thats
  2105. >the future".
  2106.  
  2107. I disagree with this.  SOM puts you in a much better position to support
  2108. Pascal than any of the other technologies Apple is using (specifically
  2109. ASLM).  At least with SOM there's a hope of you being able to compile the
  2110. IDL into Pascal.  Everywhere else on the Mac the interfaces are written in
  2111. C and then given to someone who doesn't know Pascal (and doesn't care
  2112. IMHO) to port.  With SOM you should be able to do the job yourself (and
  2113. hence get it done well).
  2114.  
  2115. btw This is all speculation from what I've read in OS/2 Developer
  2116. magazine.  I haven't actually got the OpenDoc CD.
  2117. -- 
  2118. Quinn "The Eskimo!"      <quinn@cs.uwa.edu.au>     "Support HAVOC!"
  2119. Department of Computer Science, The University of Western Australia
  2120.   Who's sick and tired of Apple Pascal interfaces that won't even
  2121.   run through the bloody compiler!  Negligence IMHO.
  2122.  
  2123. +++++++++++++++++++++++++++
  2124.  
  2125. >From philip@cs.uct.ac.za (Philip Machanick)
  2126. Date: 21 Aug 1994 11:07:22 +0200
  2127. Organization: Computer Science Department, University of Cape Town
  2128.  
  2129. John Nagle (nagle@netcom.com) wrote:
  2130.  
  2131. :      A more fundamental problem is that all this machinery exists mostly
  2132. : so you can embed different documents in your word processor and still
  2133. : edit them with appropriate tools.  It's sort of "Publish and Subscribe,
  2134. : The Next Generation".  Yes, you can do other stuff, but the touted
  2135. : advantage is mostly for integrated documents.  It's all focused on 
  2136. : what documents look like, not what they mean.  Is that really worth all 
  2137. : this complexity?  
  2138.  
  2139. I think you miss the point. You can move away from a world of monolithic
  2140. apps like word processors to generic apps in which you use your
  2141. favourite editors. This is paradigm shift, not change of detail.
  2142.  
  2143. Whether it will work or not is hard to say at this stage because of
  2144. the potential for problems with managing a highly customizable world.
  2145.  
  2146. Consider an example that is not word processing, like software development.
  2147.  
  2148. Your major outer level document looks like a Think/CW project. It
  2149. contains embedded documents that are source code, object code,
  2150. resources etc. Each of these embedded objects has editors - which
  2151. you can replace by other editors that have the right semantics,
  2152. but maybe a different look and feel. Object code's editor would
  2153. be a compiler with behaviours like bring up to date. The overall
  2154. project document would also have an editor that would bring the
  2155. whole project up to date.
  2156.  
  2157. Take this a step further and embed this in a version control
  2158. system - one more layer of document.
  2159.  
  2160. Embed this in a documentation system and you've reinvented
  2161. Knuth's Web.
  2162.  
  2163. If this is done right, vast potential is opened up for
  2164. restructuring the way you work around a document-centric
  2165. view of the world.
  2166.  
  2167. The biggest problem is that everyone is going to want to
  2168. do it - and not everyone will have the necessary design
  2169. skills.
  2170.  
  2171. This is a brave new world that Apple is creating for us and 
  2172. it will revolutionise the way we work as much as the original
  2173. Mac did.
  2174. --
  2175. Philip Machanick                      philip@cs.wits.ac.za
  2176. Computer Science Department, University of he Witwatesrand
  2177. 2050 Wits, South Africa 27(11)716-3309 fax 339-7965
  2178. (at University of Cape Town until November: 27(21)650-4058)
  2179.  
  2180. +++++++++++++++++++++++++++
  2181.  
  2182. >From h+@nada.kth.se (Jon W{tte)
  2183. Date: Sun, 21 Aug 1994 13:28:08 +0200
  2184. Organization: Royal Institute of Something or other
  2185.  
  2186. In article <CuuqMI.BMJ@news.otago.ac.nz>,
  2187. michael@elwing.otago.ac.nz (Michael(tm) Hamel) wrote:
  2188.  
  2189. >What really gets me about OpenDoc is that its another factor thats going to
  2190. >push my company off the Macintosh.
  2191.  
  2192. Huh? No-one's forcing you to write for OpenDoc. The monolthic 
  2193. app approach will not die for several years yet.
  2194.  
  2195. >We have a substantial code base written in Object Pascal. Apple are saying to
  2196. >us, "Hey, rewrite everything in C++ in this entirely different way and thats
  2197. >the future". The trouble is, thats exactly the effort required to put us on
  2198.  
  2199. No, that's not what they're saying. You will have to 
  2200. re-structure your UI around the way OpenDoc delivers user 
  2201. interaction; true; and you will also have to re-write your 
  2202. saving code a bit, but OpenDoc is LANGUAGE NEUTRAL since it 
  2203. uses SOM. OLE, on the other hand, parses vtables, so it HAS to 
  2204. be written in C++.
  2205.  
  2206. Maybe you're confusing the design of OpenDoc with the current 
  2207. alpha implementation, which does indeed temporarily require C++.
  2208.  
  2209. >etc. But it requires us to trust the Apple who brought us MacApp and BedRock
  2210. >with an awfully similar-looking exercise. And we just can't afford to do that.
  2211.  
  2212. No. You have to trust CILabs. CILabs is sponsored by Apple, 
  2213. IBM, Novell, Word Perfect and lots of other people. Word 
  2214. Perfect is doing the Windows version of OpenDoc, and I hear the 
  2215. alpha is already out. Writing for OpenDoc really means writing 
  2216. for OpenDoc, not for a particular platform. There are of course 
  2217. platform-specific areas that need to be covered, but you can 
  2218. take your own cross-platform approach, or you can use an 
  2219. existing library (like the Open Parts Framework)
  2220.  
  2221. Cheers,
  2222.  
  2223.                     / h+
  2224.  
  2225.  
  2226.  
  2227. --
  2228.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  2229.     Not speaking for IBM.
  2230.  
  2231.  
  2232. +++++++++++++++++++++++++++
  2233.  
  2234. >From pchang@Xenon.Stanford.EDU (The Weasel)
  2235. Date: 21 Aug 1994 16:05:16 GMT
  2236. Organization: Computer Science Department, Stanford University.
  2237.  
  2238. >Even though I'm not competent to refute any of his observations,  I felt that
  2239. >the tone of the article was "Microsoft paid me to write this and so I'm putting
  2240. >it in the best possible light."
  2241.  
  2242. Well, Jeff Alger does work for Microsoft now. I don't recall the articl
  2243. ementioning this.
  2244.  
  2245. Peter
  2246.  
  2247.  
  2248.  
  2249. +++++++++++++++++++++++++++
  2250.  
  2251. >From 103t_english@west.cscwc.pima.edu
  2252. Date: 21 Aug 94 15:55:16 MST
  2253. Organization: (none)
  2254.  
  2255. In article <337tvs$qkv@Times.Stanford.EDU>, pchang@Xenon.Stanford.EDU (The Weasel) writes:
  2256. >>Even though I'm not competent to refute any of his observations,  I felt that
  2257. >>the tone of the article was "Microsoft paid me to write this and so I'm putting
  2258. >>it in the best possible light."
  2259. > Well, Jeff Alger does work for Microsoft now. I don't recall the articl
  2260. > ementioning this.
  2261. > Peter
  2262.  
  2263. I got e-amil from the MacTech guy (another what'sisname) who says that Jeff A.
  2264. was NOT working for MS when the article was published...
  2265.  
  2266. Fair enough. However, one might wonder as to when Mr. Alger submitted his
  2267. application to Microsoft (or did they approach him?), and did he hope that they
  2268. would read his article in a favorable light, thereby being more likely to hire
  2269. him.
  2270.  
  2271.  
  2272. Interesting: via the Internet, we can establish possible motives for biased
  2273. reporting that can be read and debated by thousands of interested folks. 20
  2274. years ago, we would probably be waiting for an expose from the newspapers which
  2275. probably wouldn't be forthcoming in this case.
  2276.  
  2277.  
  2278. Lawson
  2279.  
  2280. +++++++++++++++++++++++++++
  2281.  
  2282. >From nagle@netcom.com (John Nagle)
  2283. Date: Mon, 22 Aug 1994 01:50:25 GMT
  2284. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  2285.  
  2286. philip@cs.uct.ac.za (Philip Machanick) writes:
  2287. >John Nagle (nagle@netcom.com) wrote:
  2288.  
  2289. >:      A more fundamental problem is that all this machinery exists mostly
  2290. >: so you can embed different documents in your word processor and still
  2291. >: edit them with appropriate tools.  It's sort of "Publish and Subscribe,
  2292. >: The Next Generation".  Yes, you can do other stuff, but the touted
  2293. >: advantage is mostly for integrated documents.  It's all focused on 
  2294. >: what documents look like, not what they mean.  Is that really worth all 
  2295. >: this complexity?  
  2296.  
  2297. >I think you miss the point. You can move away from a world of monolithic
  2298. >apps like word processors to generic apps in which you use your
  2299. >favourite editors. This is paradigm shift, not change of detail.
  2300.  
  2301.       This assumes you want an editor/document centered world.  There
  2302. are other models, such as a database-centered world.  For coordinating
  2303. the work of multiple people, a database-centered world may be more
  2304. appropriate.
  2305.  
  2306.       Whatever happened to Apple's SQL interface, anyway?  It was in
  2307. System 7, and optional in 7.1.  Is it in 7.5 at all?  I was hoping for
  2308. more data-centered apps, and groupware based on databases.
  2309.  
  2310.       The MacTech article indicates that OpenDoc is weak on locking
  2311. and networking.  How does this editor/document model work for multiple
  2312. users?
  2313.  
  2314.                     John Nagle
  2315.  
  2316. +++++++++++++++++++++++++++
  2317.  
  2318. >From sandvik@apple.com (Kent Sandvik)
  2319. Date: Mon, 22 Aug 1994 03:07:52 GMT
  2320. Organization: Dr. Stupid Meets Frankenstein
  2321.  
  2322. In article <CuuqMI.BMJ@news.otago.ac.nz>
  2323. michael@elwing.otago.ac.nz (Michael(tm) Hamel) writes:
  2324.  
  2325. > We have a substantial code base written in Object Pascal. Apple are saying to
  2326. > us, "Hey, rewrite everything in C++ in this entirely different way and thats
  2327. > the future". The trouble is, thats exactly the effort required to put us on
  2328. > Windows. Now, I believe, and I'm sure you'll agree, that moving to OpenDoc
  2329. > would be a much "nicer" thing to do and would produce a better user experience,
  2330. > etc. But it requires us to trust the Apple who brought us MacApp and BedRock
  2331. > with an awfully similar-looking exercise. And we just can't afford to do that.
  2332. > Maybe in twelve or eighteen months it will be clearer that we can, but we may
  2333. > have to commit ourselves before then. To Windows.
  2334.  
  2335. Hmm, I thought it was the other way around, OLE requires vtables and
  2336. SOM used in OpenDoc is more language independent. I need to check this
  2337. out. I think the reason some believe that OpenDoc is C++ centric is
  2338. that it uses ASLM today, but that's transitory.
  2339.  
  2340. As for Jeff A. writing the article, hehehe.... That explains the
  2341. controversy. He's also involved in MFC training and consulting. Anyway,
  2342. nobody's neutral in the computing wars. Where are the CORBRA followers,
  2343. BTW?
  2344.  
  2345. Cheers, Kent
  2346. - -
  2347. Kent Sandvik, sandvik@apple.com
  2348. --Private activities on the net, not related to the company I work for
  2349. --
  2350.  
  2351. +++++++++++++++++++++++++++
  2352.  
  2353. >From neil_ticktin@xplain.com (Neil Ticktin)
  2354. Date: Mon, 22 Aug 1994 06:26:02 GMT
  2355. Organization: MacTech Magazine/Xplain Corporation
  2356.  
  2357. In article <337tvs$qkv@Times.Stanford.EDU>, pchang@Xenon.Stanford.EDU (The
  2358. Weasel) wrote:
  2359.  
  2360. >> >Even though I'm not competent to refute any of his observations,  I
  2361. felt that
  2362. >> >the tone of the article was "Microsoft paid me to write this and so
  2363. I'm putting
  2364. >> >it in the best possible light."
  2365. >> 
  2366. >> Well, Jeff Alger does work for Microsoft now. I don't recall the articl
  2367. >> ementioning this.
  2368. >> 
  2369. >> Peter
  2370.  
  2371. Peter,
  2372.  
  2373. I need to be perfectly clear here.  Jeff was not in any way affiliated or
  2374. discussing affiliation with Microsoft until AFTER the article was
  2375. published.  As I heard it, Microsoft was so impressed by the article, they
  2376. asked him to join the company.
  2377.  
  2378. See what writing for MacTech Magazine can do for your career?  :)
  2379.  
  2380. But again -- he was unbiased at the time he wrote the article and that is
  2381. what is important.
  2382.  
  2383. Thanks,
  2384.  
  2385. Neil Ticktin
  2386. MacTech Magazine
  2387.  
  2388. - ---------------------------------------------------------------------
  2389.            Neil Ticktin, MacTech Magazine (formerly MacTutor)
  2390. PO Box 250055, Los Angeles, CA 90025 * 310-575-4343 * Fax: 310-575-0925
  2391.  For more info, anonymous ftp to ftp.netcom.com and cd to /pub/xplain
  2392.   custservice@xplain.com * editorial@xplain.com * adsales@xplain.com
  2393. marketing@xplain.com * accounting@xplain.com * pressreleases@xplain.com
  2394.    progchallenge@xplain.com * publisher@xplain.com * info@xplain.com
  2395.  
  2396. +++++++++++++++++++++++++++
  2397.  
  2398. >From philip@cs.uct.ac.za (Philip Machanick)
  2399. Date: 21 Aug 1994 11:59:23 +0200
  2400. Organization: Computer Science Department, University of Cape Town
  2401.  
  2402.  
  2403. Kent Sandvik (sandvik@apple.com) wrote:
  2404. : In article <334tko$jjq@cs.uct.ac.za>
  2405.  
  2406. : You are on the right track, a lot of the OLE versus OpenDoc has to do
  2407. : with techno-political, strategic games. Microsoft would not like to
  2408. : loose the lucrative market of selling base applications to office
  2409. : environments. Imagine a future where anyone could buy cheaper
  2410. : components and put together their favourite environment. The content is
  2411. : the content, and the tools are the tools.
  2412.  
  2413. : There will of course be a nice market for companies that bundle part
  2414. : handlers so the end result is indeed a classical application. However
  2415. : Microsoft would no longer have full control of their base line
  2416. : application offerings, and that's something they don't want to loose.
  2417. : Thus their technical drive behind OLE is more to make sure that
  2418. : applications offer OLE support, and of course their applications are
  2419. : the prime OLE engines. 
  2420.  
  2421. : Think about this next time you read technical blurbs from Microsoft
  2422. : about OLE. Anyway, private comments. I would rather see a world where
  2423. : all kinds of companies are allowed to compete on the application arena,
  2424. : instead of having one single big company dictate the rules.
  2425.  
  2426. I would still like to see more on OLE - even if I am on the right
  2427. track without knowing anything :) Does MS have an ftp site or WW
  2428. server with documentation?
  2429.  
  2430. In 1987, I started thinking about Brad Cox's Software IC idea -
  2431. reusable components written in a object-oriented language. His notion
  2432. was that software should be sold in small reusable units, the way
  2433. chips are sold.
  2434.  
  2435. However, I felt that something was missing. Most people who add ICs
  2436. (chips) to things like computers are not engineers who design the
  2437. whole thing from board level up. What was really needed was the
  2438. software analog of the printed circuit board (PCB), already populated
  2439. with enough ICs to get you started. Something like a PC logic board,
  2440. with RAM, FPU and other options left out - and slots for expansion.
  2441.  
  2442. I considered various candidates for software PCBs among existing OO
  2443. tools, and felt none of them provided enough support for plugging in
  2444. components - they were more like the software equivalent of wire
  2445. wrap prototypes. A true software PCB would have to define an
  2446. infrastructure for adding components that would not only define
  2447. default behaviours, like low-level printer protocols, but also
  2448. ways for components to interact (the software analog of traces on
  2449. the PCB, and hardware interaction protocols - voltage levels etc.).
  2450. Components would have to define how they appeared on a page,
  2451. shared space with neighouring objects, etc.
  2452.  
  2453. Another idea I had was that everything should be a document -
  2454. there shouldn't even be a separate file system. Viewing what's
  2455. on your disk then becomes a special case of viewing contents
  2456. of a document - and alternative views also become a natural
  2457. concept. I dislike imposing a single hierarchy on the world,
  2458. and by allowing alternative views of the "file system", it
  2459. should be possible to navigate through your disk in a way
  2460. natural to the task at hand. For example, group together
  2461. everything created after a certain date, view everything
  2462. related to a specific project etc. I also thought up the
  2463. idea of thumbnail views - I felt something was needed
  2464. between an icon and a full view of a document.
  2465.  
  2466. I think it would be very interesting to put together an
  2467. OpenDoc hierarchical browser similar to the Smalltalk
  2468. browser, which would allow navigation of the file system
  2469. according to a range of criteria (take the System 7 Find
  2470. as a starting point). The lowest level of the browser would
  2471. be a document - which you could start working on. One level
  2472. up, names of everything that matched the search criteria,
  2473. with the option of expanding to thumbnail views. Next level
  2474. up, the search criteria.
  2475.  
  2476. I don't claim all these ideas are original - though until
  2477. OpeDoc appeared, I don't recall seeing them put together
  2478. in this way. The way OpenDoc packages these concepts is
  2479. a paradigm shift - it changes the way we thing about
  2480. documents and applications - it is not just another
  2481. kludge to make it easier to share information.
  2482.  
  2483. I had a student do a protype software PCB in MacApp and tried
  2484. to get a paper published on the subject, and guess what? A few
  2485. of the referees were really taken with the idea, others said
  2486. so what - everyone's doing this. (Something like the people
  2487. who are now saying so what - OLE is almost the same as
  2488. OpenDoc.) My prototype was not very complete - I didn't have
  2489. a very good model of dynamic linking - but it was prossible
  2490. in principle to paste in editors using ResEdit. I also didn't
  2491. have all the machinery for communication between different
  2492. kinds of objects (parts in OpenDoc terminology). I suppose
  2493. I could have pushed the idea further but I moved on to
  2494. other things.
  2495.  
  2496. More recently, I saw an element of the idea in the way
  2497. Claris Works integrated patches of other documents in
  2498. a base document, though without the extensibility. It
  2499. is interesting that a lot of the examples in the OpenDoc
  2500. printed documentation come from Claris Works.
  2501.  
  2502. Where does OpenDoc fit into this? A base OpenDoc collection of part
  2503. handlers, ready to have more added to make a useful "application", is
  2504. a software PCB. OpenDoc itself is more like a standard and set of
  2505. tools for creating such PCBs - the software analogue of something like
  2506. PReP.
  2507.  
  2508. Any further thoughts on this?
  2509. --
  2510. Philip Machanick                      philip@cs.wits.ac.za
  2511. Computer Science Department, University of he Witwatesrand
  2512. 2050 Wits, South Africa 27(11)716-3309 fax 339-7965
  2513. (at University of Cape Town until November: 27(21)650-4058)
  2514.  
  2515. +++++++++++++++++++++++++++
  2516.  
  2517. >From h+@nada.kth.se (Jon W{tte)
  2518. Date: Mon, 22 Aug 1994 14:54:24 +0200
  2519. Organization: Royal Institute of Something or other
  2520.  
  2521. In article <nagleCuwyG1.IEJ@netcom.com>,
  2522. nagle@netcom.com (John Nagle) wrote:
  2523.  
  2524. >Whatever happened to Apple's SQL interface, anyway?  It was in
  2525. >System 7, and optional in 7.1.  Is it in 7.5 at all?  I was hoping for
  2526. >more data-centered apps, and groupware based on databases.
  2527.  
  2528. It's undergone development; they now support ODBC alongside 
  2529. with DAL. ODBC is of course a Microsoft standard, but in this 
  2530. one case it seems Apple and Microsoft could agree on using the 
  2531. same technology...
  2532.  
  2533. Of course, doing ODBC -> DAL tranlsation, talking to a DAL 
  2534. server that translates into native SQL, and then finally 
  2535. getting at the database isn't optimal, performance-wise.
  2536.  
  2537. Cheers,
  2538.  
  2539.                 / h+
  2540.  
  2541.  
  2542. --
  2543.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  2544.  "Don't Deal with a Dragon."
  2545.  
  2546.  
  2547. +++++++++++++++++++++++++++
  2548.  
  2549. >From sandvik@apple.com (Kent Sandvik)
  2550. Date: Tue, 23 Aug 1994 00:41:13 GMT
  2551. Organization: Dr. Stupid Meets Frankenstein
  2552.  
  2553. In article <3378hr$mkp@cs.uct.ac.za>
  2554. philip@cs.uct.ac.za (Philip Machanick) writes:
  2555.  
  2556. > In 1987, I started thinking about Brad Cox's Software IC idea -
  2557. > reusable components written in a object-oriented language. His notion
  2558. > was that software should be sold in small reusable units, the way
  2559. > chips are sold.
  2560.  
  2561. Jacobson's book "Object Oriented Software Engineering" has a fairly
  2562. good chapter describing all the problems why software reusable
  2563. components never took off in the initial place. The latest Scientific
  2564. American also has an article describing more about the implications. My
  2565. terse comment is: "It's all in the culture, dammit".
  2566.  
  2567. One tricky way to bypass such cases is to promote a frame into which
  2568. people could write extensions, and promote the content rather than the
  2569. functionality (Photoshop, Premier, OpenDoc...). Another example of a
  2570. smart content container is QuickTime; it is defined, and it's up to
  2571. developers to write applications and tools that reuse or create content
  2572. (QT). Personally I think this is the way to do rather than forcing
  2573. companies and developers to use pre-defined components that don't do
  2574. the work required, and we are back on the hacking drawing board.  And
  2575. we should not lock ourselves to a particular computer language (style
  2576. OLE and vtables). 
  2577.  
  2578. Anyway, personal and of course politically flavored comments :-).
  2579.  
  2580. --Kent
  2581. - -
  2582. Kent Sandvik, sandvik@apple.com
  2583. --Private activities on the net, not related to the company I work for
  2584. --
  2585.  
  2586. +++++++++++++++++++++++++++
  2587.  
  2588. >From pathak@world.std.com (Heeren H Pathak)
  2589. Date: Tue, 23 Aug 1994 13:26:19 GMT
  2590. Organization: The World Public Access UNIX, Brookline, MA
  2591.  
  2592. In article <nagleCuwyG1.IEJ@netcom.com>, John Nagle <nagle@netcom.com> wrote:
  2593. >      This assumes you want an editor/document centered world.  There
  2594. >are other models, such as a database-centered world.  For coordinating
  2595. >the work of multiple people, a database-centered world may be more
  2596. >appropriate.
  2597. >
  2598.  
  2599. Believe it or not this is where OpenDoc may really shine.
  2600.  
  2601. Despite the blasting of SOM in Jeff Alger's article  comparing OpenDoc vs OLE,
  2602. SOM may be the the biggest "enabling " technology of OpenDoc.  OpenDoc
  2603. is really an object model on extending SOM.  SOM is a technology for 
  2604. supporting distributed objects.  This happens to be ideal for developing
  2605. object components.  SOM is based on a "industry standard" specification 
  2606. released by a consoritium called the Object Management Group.  There
  2607. are working groups in this consortia that are defining object models and
  2608. frameworks for database systems, collaborative computing, transaction 
  2609. processing, etc...  As these object models get defined, there is no
  2610. technical reason they could not be adopted by CLI.  In fact, CLI has been
  2611. asked to submit OpenDoc as the "standard" for compound documents.
  2612.  
  2613. The biggest danger in all of this is the "standard" will be too late.  I
  2614. believe this is a real risk.  However, I think the OMG has a very early 
  2615. start on this technology and has plenty of time to get things done.
  2616.  
  2617. Heeren Pathak
  2618.  
  2619.  
  2620.  
  2621. +++++++++++++++++++++++++++
  2622.  
  2623. >From Jens Alfke <jens_alfke@powertalk.apple.com>
  2624. Date: Wed, 24 Aug 1994 00:39:33 GMT
  2625. Organization: Apple Computer
  2626.  
  2627. 103t_english@west.cscwc.pima.edu writes:
  2628. > Even though I'm not competent to refute any of his observations,  I felt
  2629. that
  2630. > the tone of the article was "Microsoft paid me to write this and so I'm
  2631. putting
  2632. > it in the best possible light."
  2633. > Anyone else get this feeling?
  2634.  
  2635. I'm obviously not unbiased in this, so I'll skip my own opinions of the
  2636. article; but I can point out that since the publication of said article, the
  2637. author has accepted a position at Microsoft. Draw your own conclusions.
  2638.  
  2639. --Jens Alfke                           jens_alfke@powertalk.apple.com
  2640.                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  2641.  
  2642. +++++++++++++++++++++++++++
  2643.  
  2644. >From alger@netcom.com (Jeff Alger)
  2645. Date: Thu, 25 Aug 1994 06:51:41 GMT
  2646. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  2647.  
  2648. OK, I've had enough of this.  If you want to disagree with my opinions, 
  2649. fine.  I have yet to have anyone question items of fact in all of a 6000 
  2650. word article which was submitted to both Microsoft and Apple for review 
  2651. before publication.
  2652.  
  2653. I will say this once and only once because it isn't worth the trouble.  
  2654. Until becoming an employee of Microsoft last week, two months after the 
  2655. article was completed, I had never accepted a dime from Microsoft nor had 
  2656. any business relationship whatsoever, other than asking them for 
  2657. information as I would have Apple or any other vendor.  I had no interest 
  2658. in getting a job with Microsoft or anyone else at the time of writing the 
  2659. article.  Microsoft approached me AFTER the article was submitted to 
  2660. MacTech in final form.  I find it highly doubtful that they would have 
  2661. been interested in hiring me if my integrity was for sale and I certainly 
  2662. would not have been interested in working for a company that would act in 
  2663. such an unethical way.  At no time was any offer of money or employment 
  2664. made in connection with the article.
  2665.  
  2666. There are many of you out there that have known me for many years within
  2667. the Mac community - Chairman of MADA for two years, instructor at Apple's
  2668. Developer University, author of a popular book on object-oriented
  2669. development for the Mac, consultant, contributing editor to Frameworks,
  2670. presenter at several WWDC's.  My consulting practice has always been built
  2671. on the highest degree of professionalism and integrity and yes, Kent, I
  2672. have dealt with Windows, as well as Mac, mainframe, business process
  2673. reengineering and any other problems my clents have needed help with. 
  2674. That is in part why I was chosen to write this article.  Certainly that
  2675. was known to Apple when they OK'd me as an independent reviewer of the two
  2676. products. 
  2677.  
  2678. This sort of mud-slinging has no place in a professional forum.  If any of
  2679. you have a problem with my ethics, take it up directly with me; don't drop
  2680. snide observations in a public forum.  Those who know me can tell you that
  2681. I will answer any and all questions honestly about my assumptions,
  2682. methodology and motivations in writing the article. 
  2683.  
  2684. I can be reached either at this email address or at jeffal@microsoft.com.
  2685.  
  2686. Regards,
  2687. Jeff Alger
  2688.  
  2689. Jens Alfke (jens_alfke@powertalk.apple.com) wrote:
  2690. : 103t_english@west.cscwc.pima.edu writes:
  2691. : > Even though I'm not competent to refute any of his observations,  I felt
  2692. : that
  2693. : > the tone of the article was "Microsoft paid me to write this and so I'm
  2694. : putting
  2695. : > it in the best possible light."
  2696. : > Anyone else get this feeling?
  2697.  
  2698. : I'm obviously not unbiased in this, so I'll skip my own opinions of the
  2699. : article; but I can point out that since the publication of said article, the
  2700. : author has accepted a position at Microsoft. Draw your own conclusions.
  2701.  
  2702. : --Jens Alfke                           jens_alfke@powertalk.apple.com
  2703. :                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  2704. -- 
  2705.  
  2706.  
  2707. +++++++++++++++++++++++++++
  2708.  
  2709. >From hanrek@cts.com (Mark Hanrek)
  2710. Date: 25 Aug 1994 21:08:03 GMT
  2711. Organization: The Information Workshop
  2712.  
  2713. > This sort of mud-slinging has no place in a professional forum.  
  2714.  
  2715. Here! Here! 
  2716.  
  2717. Everyone deserves respect, and the benefit of the doubt.
  2718.  
  2719.  
  2720.  
  2721. Mark Hanrek
  2722. The Information Workshop
  2723.  
  2724. - --------------------------------------------------------------------
  2725. ( And y'all though I was going to point out that csmp is a newsgroup, 
  2726.   not a forum, dintcha!  :)
  2727. >From eric.larson@f620.n2605.z1.fidonet.org (eric larson)
  2728. Subject: Lets talk OpenDoc
  2729. Date: 21 Aug 94 08:27:51 -
  2730. Organization: FidoNet: Shockwave Rider, USR V.Everything +1(908)294-0659 
  2731.  
  2732.  >      A more fundamental problem is that all this machinery exists mostly
  2733.  > so you can embed different documents in your word processor and still
  2734.  > edit them with appropriate tools.  It's sort of "Publish and Subscribe,
  2735.  > The Next Generation".  Yes, you can do other stuff, but the touted
  2736.  > advantage is mostly for integrated documents.  It's all focused on
  2737.  > what documents look like, not what they mean.  Is that really worth all
  2738.  > this complexity?
  2739.  
  2740. One concern I have about this technology is what it is going to do to document
  2741. portability.
  2742.  
  2743. +++++++++++++++++++++++++++
  2744.  
  2745. >From nagle@netcom.com (John Nagle)
  2746. Date: Mon, 29 Aug 1994 19:04:43 GMT
  2747. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  2748.  
  2749. eric.larson@f620.n2605.z1.fidonet.org (eric larson) writes:
  2750. Nagle wrote:
  2751. > >      A more fundamental problem is that all this machinery exists mostly
  2752. > > so you can embed different documents in your word processor and still
  2753. > > edit them with appropriate tools.  It's sort of "Publish and Subscribe,
  2754. > > The Next Generation".  Yes, you can do other stuff, but the touted
  2755. > > advantage is mostly for integrated documents.  It's all focused on
  2756. > > what documents look like, not what they mean.  Is that really worth all
  2757. > > this complexity?
  2758. >One concern I have about this technology is what it is going to do to document
  2759. >portability.
  2760.  
  2761.       Or long-term document integrity.  Will you still be able to read
  2762. your document a few years downstream, after all the applications have
  2763. changed?  And if you can't, which vendor do you call for help?
  2764.  
  2765.       And reading a document two decades hence may present real problems.
  2766.  
  2767.                     John Nagle
  2768.  
  2769. +++++++++++++++++++++++++++
  2770.  
  2771. >From E.J. Draper <draper@utmdacc.mda.uth.tmc.edu>
  2772. Date: 29 Aug 1994 20:29:43 GMT
  2773. Organization: U.T.M.D. Anderson Cancer Center
  2774.  
  2775.  
  2776. >> > edit them with appropriate tools.  It's sort of "Publish and
  2777. Subscribe,
  2778. >> > The Next Generation".  Yes, you can do other stuff, but the touted
  2779.  
  2780. How many times a day do you use Publish and Subscribe?  
  2781.  
  2782. The one, and only, application I have for Publish and Subscribe
  2783. technology is checking the amount of vacation hours I've got coming to me
  2784. from the departmental spreadsheet.  I use it once a week at the most,
  2785. probably more like once a month. 
  2786.  
  2787. I can see some interesting applications of OpenDoc technology, but I
  2788. certainly don't feel it's as mind-boggling awesome as the market-droids
  2789. would have us think.  What's OpenDoc going to do for me?  Does a compiler
  2790. part make sense?  How about news reader part?  An email part? A PIM part?
  2791. A Resorcerer part?  How does OpenDoc improve the way that people work
  2792. with information?  Does it make the computer more approachable to novice
  2793. users?  What specific problem is it trying to solve?
  2794.  
  2795. It seems like the whole OpenDoc paradigm starts breaking down after you
  2796. get past the Graphic+MooV+Text+Spreadsheet model.
  2797.  
  2798.  
  2799.       |E|J-  ED DRAPER
  2800.  rEpar|D|<-  Radiologic/Pathologic Institute
  2801.              The University of Texas M.D. Anderson Cancer Center
  2802.              draper@utmdacc.mda.uth.tmc.edu
  2803.  
  2804. +++++++++++++++++++++++++++
  2805.  
  2806. >From nagle@netcom.com (John Nagle)
  2807. Date: Tue, 30 Aug 1994 05:28:45 GMT
  2808. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  2809.  
  2810. E.J. Draper <draper@utmdacc.mda.uth.tmc.edu> writes:
  2811. >It seems like the whole OpenDoc paradigm starts breaking down after you
  2812. >get past the Graphic+MooV+Text+Spreadsheet model.
  2813.  
  2814.       I think he has a point.  I can imagine a CAD system based on this
  2815. approach, where you click on a subassembly to get to the detailed drawings.
  2816. But that doesn't even fit the OpenDoc model, which is 2D, not 3D.
  2817. What, besides embed stuff in word processor documents, is one really likely
  2818. to do with OpenDoc?
  2819.  
  2820.       By the way, how does OpenDoc do version management?
  2821.  
  2822.                     John Nagle
  2823.  
  2824. +++++++++++++++++++++++++++
  2825.  
  2826. >From quinlan@kits.sfu.ca (Brian Quinlan)
  2827. Date: 30 Aug 94 07:09:52 GMT
  2828. Organization: Simon Fraser University
  2829.  
  2830. E.J. Draper <draper@utmdacc.mda.uth.tmc.edu> writes:
  2831.  
  2832. >I can see some interesting applications of OpenDoc technology, but I
  2833. >certainly don't feel it's as mind-boggling awesome as the market-droids
  2834. >would have us think.  What's OpenDoc going to do for me?  Does a compiler
  2835. >part make sense?  How about news reader part?  An email part? A PIM part?
  2836. >A Resorcerer part?  How does OpenDoc improve the way that people work
  2837. >with information?  Does it make the computer more approachable to novice
  2838. >users?  What specific problem is it trying to solve?
  2839.  
  2840. You could build a development system by have a project manager as the
  2841. base and compiler, interface builders, object browsers, debuggers and
  2842. editors as parts. Notice that Symantic has a project manager and then
  2843. calls the appropriate compiler and editor when they are needed. You
  2844. could have a bases upon which you had a newreader, email and ftp parts.
  2845. Anyone agree with this?
  2846.  
  2847.  
  2848. +++++++++++++++++++++++++++
  2849.  
  2850. >From jdelkins@lilly.com (Joel D. Elkins)
  2851. Date: Tue, 30 Aug 1994 09:39:27 -0600
  2852. Organization: NewMedia, Inc., Indianapolis, IN
  2853.  
  2854. In article <33tgfn$r62@oac4.hsc.uth.tmc.edu>, E.J. Draper
  2855. <draper@utmdacc.mda.uth.tmc.edu> wrote:
  2856.  
  2857. > I can see some interesting applications of OpenDoc technology, but I
  2858. > certainly don't feel it's as mind-boggling awesome as the market-droids
  2859. > would have us think.  What's OpenDoc going to do for me?  Does a compiler
  2860. > part make sense?  How about news reader part?  An email part? A PIM part?
  2861. > A Resorcerer part?  How does OpenDoc improve the way that people work
  2862. > with information?  Does it make the computer more approachable to novice
  2863. > users?  What specific problem is it trying to solve?
  2864.  
  2865. And what about client-server based apps, much in use by corporations today,
  2866. for which the "document" paradigm really doesn't apply. Most of
  2867. the c/s apps I've seen are more "forms" based. How will OpenDoc improve
  2868. such apps? Unless it does, I don't see widespread acceptance by corporations
  2869. for their in-house development efforts.
  2870.  
  2871. -- 
  2872. Joel D. Elkins, N5USU              |                   NewMedia, Inc.
  2873. JDElkins@lilly.com                 |                 Indianapolis, IN
  2874.  
  2875. +++++++++++++++++++++++++++
  2876.  
  2877. >From rmah@panix.com (Robert Mah)
  2878. Date: Tue, 30 Aug 1994 12:47:01 -0500
  2879. Organization: One Step Beyond
  2880.  
  2881. jdelkins@lilly.com (Joel D. Elkins) wrote:
  2882.  
  2883. ) And what about client-server based apps, much in use by corporations
  2884. ) today, for which the "document" paradigm really doesn't apply. Most of
  2885. ) the c/s apps I've seen are more "forms" based. How will OpenDoc improve
  2886. ) such apps? Unless it does, I don't see widespread acceptance by
  2887. ) corporations for their in-house development efforts.
  2888.  
  2889. While Apple has emphasised the user interface portion of OpenDoc, the 
  2890. "document-centered" model, from my conversations with one of the OpenDoc
  2891. developers at the last MacWorld expo, I firmly beleive that OpenDoc's
  2892. flexible architecture will help corporate developers a great deal.
  2893.  
  2894. Aside...
  2895.   Q: What is the difference between a "form" and a "document"?
  2896.   A: A form only has 1 page, but document's have a lot!  :-)
  2897.  
  2898. A couple of, not widely talked about, components are integrall here.
  2899. The first is the name space management feature.  I guess this is part
  2900. of SOM, but OpenDoc gives you an architecture to wrap your mind around.
  2901. With name space management, you could register a "analysis engine" 
  2902. part on one machine, and have documents on another machine access it
  2903. to perform the analysis.
  2904.  
  2905. Other parts that could/are being developed include hooks for retreiving
  2906. data from SQL databases, intelligent report writing, etc.
  2907.  
  2908. Another problem that OpenDoc will eventually help solve is the dreaded
  2909. "why can't XYZ app do what Excel does?"  How many times have you, as a
  2910. in house developer, written a software package only to have the users
  2911. come back asking for features that are found in other commercial packages?
  2912. It may be obvious to us that adding these frills would take too much 
  2913. time and cost too much, but it's not obvious to the users.  By encouraging
  2914. more vendors to implement a wide variety of parts that can interoperate
  2915. together easily, we'll be able to add these frills at minimal cost.
  2916.  
  2917. Personally, I think that OpenDoc could make the creation of special
  2918. purpose software much easier and much more enjoyable.
  2919.  
  2920. Cheers,
  2921. Rob
  2922. _____________________________________________________________________
  2923. Robert S. Mah           Software Development          +1.212.947.6507
  2924. One Step Beyond        and Network Consulting          rmah@panix.com
  2925.  
  2926. +++++++++++++++++++++++++++
  2927.  
  2928. >From lentz@rossi.astro.nwu.edu (Robert Lentz)
  2929. Date: 30 Aug 1994 16:45:54 GMT
  2930. Organization: Northwestern University, Evanston, Illinois, USA
  2931.  
  2932. In article <33tgfn$r62@oac4.hsc.uth.tmc.edu>,
  2933. E.J. Draper  <draper@utmdacc.mda.uth.tmc.edu> wrote:
  2934. >...
  2935. >It seems like the whole OpenDoc paradigm starts breaking down after you
  2936. >get past the Graphic+MooV+Text+Spreadsheet model.
  2937.  
  2938. Well, that covers all the basic types which other applications use too.
  2939.  
  2940. Let's see: newsreader using a text part for composing messages, same with
  2941. mail program; perhaps sometimes using a WWW part for displaying HTML
  2942. documents, which then uses the text part and any necessary graphics parts
  2943. again...
  2944.  
  2945. I think it could go far.
  2946.  
  2947. -Robert
  2948. -- 
  2949. lentz@rossi.astro.nwu.edu            http://www.astro.nwu.edu/lentz/plan.html
  2950.     "You have to push as hard as the age that pushes against you."
  2951.                     -Flannery O'Connor
  2952.  
  2953. +++++++++++++++++++++++++++
  2954.  
  2955. >From nagle@netcom.com (John Nagle)
  2956. Date: Tue, 30 Aug 1994 16:40:42 GMT
  2957. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  2958.  
  2959. quinlan@kits.sfu.ca (Brian Quinlan) writes:
  2960. >You could build a development system by have a project manager as the
  2961. >base and compiler, interface builders, object browsers, debuggers and
  2962. >editors as parts. Notice that Symantic has a project manager and then
  2963. >calls the appropriate compiler and editor when they are needed. 
  2964.     The whole development environment shouldn't be a structured document,
  2965. but source programs might be.  Programs today have parts which are visual
  2966. and parts which are textual, and those parts need to be better connected.
  2967. HyperCard already does this.
  2968.  
  2969. >You could have a basis upon which you had a newsreader, email and ftp parts.
  2970.     You could, but why would you want to embed those functions in a
  2971. structured document?  A document is the wrong metaphor for that collection
  2972. of functions.  There's no content in which you're embedding those
  2973. functions.  A multiwindow application is more appropriate.
  2974.  
  2975.     An OpenDoc or OLE-based creation system for multimedia content
  2976. would make sense, but that's an extension of the word processor metaphor.
  2977.  
  2978.     The whole multi-source document concept is useful, but only for things
  2979. that naturally have a document metaphor.
  2980.  
  2981.                     John Nagle
  2982.  
  2983. +++++++++++++++++++++++++++
  2984.  
  2985. >From susser@apple.com (Joshua Susser)
  2986. Date: Tue, 30 Aug 1994 17:29:47 GMT
  2987. Organization: Apple Computer - AppleSoft
  2988.  
  2989. I'm going to try to respond to several issues raised in this thread, to
  2990. keep the branching factor down.  I don't usually have time to do this, but
  2991. since I do, here goes...
  2992.  
  2993. eric.larson@f620.n2605.z1.fidonet.org (eric larson) writes:
  2994. > One concern I have about this technology is what it is going to do to
  2995. > document portability.
  2996.  
  2997. If anything, OpenDoc should make your documents MORE portable.  OpenDoc
  2998. documents will be binary-compatible across all supported platforms.  Our
  2999. acid test is being able to open a document on a server from a Mac and a
  3000. Windows machine at the same time, which you should be able to do when we
  3001. ship.
  3002.  
  3003. nagle@netcom.com (John Nagle) wrote:
  3004. >       Or long-term document integrity.  Will you still be able to read
  3005. > your document a few years downstream, after all the applications have
  3006. > changed?  And if you can't, which vendor do you call for help?
  3007. >       And reading a document two decades hence may present real problems.
  3008.  
  3009. I already have this problem.  Some documents I have that are only 3 or 4
  3010. years old are suddenly non-readable, because their applications won't run
  3011. on current software, or whatever.  But we have factored the architecture
  3012. so that if you don't have an editor for one kind of part in your document,
  3013. you can still open the document and edit the other parts for which you do
  3014. have editors.  We also encourage developers to store their parts in
  3015. multiple formats, so that if you don't have an editor for one format, you
  3016. may for another.
  3017.  
  3018. I have no idea what the world will be like in 20 years, and neither do
  3019. you.  I doubt anyone will be using anything as mundane as compound
  3020. documents by then, so don't worry about it. :-)
  3021.  
  3022. nagle@netcom.com (John Nagle) wrote:
  3023. > E.J. Draper <draper@utmdacc.mda.uth.tmc.edu> writes:
  3024. > >It seems like the whole OpenDoc paradigm starts breaking down after you
  3025. > >get past the Graphic+MooV+Text+Spreadsheet model.
  3026. >       I think he has a point.  I can imagine a CAD system based on this
  3027. > approach, where you click on a subassembly to get to the detailed drawings.
  3028. > But that doesn't even fit the OpenDoc model, which is 2D, not 3D.
  3029. > What, besides embed stuff in word processor documents, is one really likely
  3030. > to do with OpenDoc?
  3031.  
  3032. OpenDoc windows and layout objects are 2D, because that's the
  3033. dimensionality of the imaging devices available today (for the most
  3034. part).  But we did leave enough room in the API to support 3D parts.  It
  3035. should in fact be possible to embed a text part onto the surface of a 3D
  3036. sphere part.
  3037.  
  3038. But even without 3D, OpenDoc is suitable for much more than just a
  3039. "Graphic+MooV+Text+Spreadsheet" kind of document.  See below.
  3040.  
  3041. >       By the way, how does OpenDoc do version management?
  3042.  
  3043. OpenDoc documents provide a facility for creating a named revision of your
  3044. document called a "draft".  Each draft is basically a checkpoint of the
  3045. state of the document.  You can create a new draft at any time, have as
  3046. many as you like, open old drafts to compare to newer, etc.  Using Bento,
  3047. we can store each draft as a delta on the state of the previous draft, so
  3048. we don't double the size of a document to add a second draft.  There's
  3049. lots more about drafts, but you can read the documentation for that.
  3050.  
  3051. jdelkins@lilly.com (Joel D. Elkins) wrote:
  3052. > And what about client-server based apps, much in use by corporations today,
  3053. > for which the "document" paradigm really doesn't apply. Most of
  3054. > the c/s apps I've seen are more "forms" based. How will OpenDoc improve
  3055. > such apps? Unless it does, I don't see widespread acceptance by corporations
  3056. > for their in-house development efforts.
  3057.  
  3058. Actually, OpenDoc has a great story for in-house MIS types.  They have two
  3059. big desires - being able to use COTS (Commercial Off The Shelf) Software,
  3060. and getting a vertical solution for their special needs.  Notice these two
  3061. desires are in direct conflict.  But with component technology like
  3062. OpenDoc, you can buy a set of COTS part editors and maybe only have to
  3063. write one or two special purpose ones in house.  Then create standard
  3064. stationery using these chosen editors, write some scripts to integrate the
  3065. parts functionality, and presto, it's an instant vertical application,
  3066. custom made for your department with mostly COTS components.
  3067.  
  3068. As for client-server, OpenDoc supports the concept of what we've been
  3069. calling an "embedded client".  Create a part editor that can operate as a
  3070. client for a remote server.  Now you have client parts that you can embed
  3071. in your document anywhere you'd like.  The state of the part is the query
  3072. rule plus some cached information about the results of the last query. 
  3073. When you open the document, push a button, or whatever, the part queries
  3074. the server and then displays the results of the query as its contents.  I
  3075. saw a demo yesterday of just such a client part editor written by Oracle
  3076. (it's a demo, not a future product).  You could even link a chart part to
  3077. data returned by a query.  Apparently this is even more powerful than
  3078. current solutions, as it is much easier to have a document ("solution")
  3079. that interacts with many databases - just create a part for each one.
  3080.  
  3081. Other kinds of embedded clients are easily possible.  Imagine a stock
  3082. ticker part that gave running price quotes on your 10 favorite stocks. 
  3083. Link this to a spreadsheet part to help you compute the net value of your
  3084. portfolio.
  3085.  
  3086. A good rule of thumb for what could and should be written as a part editor is:
  3087. "If it has a user interface, it should be a part."
  3088.  
  3089. Well, my compile is done, so back to work...
  3090.  
  3091. Joshua Susser, Object Contortionist
  3092. Apple Computer - AppleSoft, OpenDoc Engineering
  3093. inet: susser@apple.com | link: susser.j | phone: 408/974-6997
  3094.  
  3095. +++++++++++++++++++++++++++
  3096.  
  3097. >From h+@nada.kth.se (Jon W{tte)
  3098. Date: Tue, 30 Aug 1994 20:33:09 +0200
  3099. Organization: Royal Institute of Something or other
  3100.  
  3101. In article <33tgfn$r62@oac4.hsc.uth.tmc.edu>,
  3102. E.J. Draper <draper@utmdacc.mda.uth.tmc.edu> wrote:
  3103.  
  3104. >would have us think.  What's OpenDoc going to do for me?  Does a compiler
  3105. >part make sense?
  3106.  
  3107. Yes; or rather; an IDE is a collection of parts like an editor 
  3108. part, a code generator part, a project file part, ...
  3109.  
  3110. >How about news reader part?
  3111.  
  3112. That's also a collection of an editor part, a news collection 
  3113. part, ...
  3114.  
  3115. >An email part?
  3116.  
  3117. See above.
  3118.  
  3119. >users?  What specific problem is it trying to solve?
  3120.  
  3121. Read the OpenDoc white paper. A simple example:
  3122.  
  3123. Your news reader comes with the SimpleText text edittig part. 
  3124. Unfortunately, this part does not handle parts larger than 32k, 
  3125. so to decode alt.binaries.pictures.erotica.jello, you instead 
  3126. use the Alpha text editting part which handles larger 
  3127. documents, and write a small script that scans the news 
  3128. collection part for multi-part postings, uses Alpha to 
  3129. concatenate them, uses the StuffIt mangling part to get an 
  3130. image which you display in the JPEGView picture display part.
  3131.  
  3132. Cheers,
  3133.  
  3134.                     / h+
  3135.  
  3136.  
  3137. --
  3138.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  3139.  
  3140.   Reality exists only in your imagination.
  3141.  
  3142.  
  3143. +++++++++++++++++++++++++++
  3144.  
  3145. >From 103t_english@west.cscwc.pima.edu
  3146. Date: 30 Aug 94 11:18:38 MST
  3147. Organization: (none)
  3148.  
  3149. In article <nagleCvCwzu.EF2@netcom.com>, nagle@netcom.com (John Nagle) writes:
  3150. > quinlan@kits.sfu.ca (Brian Quinlan) writes:
  3151. >>You could build a development system by have a project manager as the
  3152. >>base and compiler, interface builders, object browsers, debuggers and
  3153. >>editors as parts. Notice that Symantic has a project manager and then
  3154. >>calls the appropriate compiler and editor when they are needed. 
  3155. >     The whole development environment shouldn't be a structured document,
  3156. > but source programs might be.  Programs today have parts which are visual
  3157. > and parts which are textual, and those parts need to be better connected.
  3158. > HyperCard already does this.
  3159. >>You could have a basis upon which you had a newsreader, email and ftp parts.
  3160. >     You could, but why would you want to embed those functions in a
  3161. > structured document?  A document is the wrong metaphor for that collection
  3162. > of functions.  There's no content in which you're embedding those
  3163. > functions.  A multiwindow application is more appropriate.
  3164. >     An OpenDoc or OLE-based creation system for multimedia content
  3165. > would make sense, but that's an extension of the word processor metaphor.
  3166. >     The whole multi-source document concept is useful, but only for things
  3167. > that naturally have a document metaphor.
  3168. >                     John Nagle
  3169.  
  3170. Something that everyone seems to be missing in this discussion:
  3171.  
  3172. a while back, the OpenDoc architects had an AOL discussion which was archived.
  3173. >From the archive, I gleaned this interesting tidbit (from memory, sorry):
  3174.  
  3175. OpenDoc is robust enough to allow the creation of a Virtual REality where every
  3176. object in the VR is run on its own computer and collated by OpenDoc over the
  3177. network.
  3178.  
  3179.  
  3180. One would assume that the "document" in this case, would be a set of 3D VR
  3181. glasses or a 3D virtual environment complete with sound effects and tactile
  3182. effects ala high-end flight simulators (and beyond).
  3183.  
  3184.  
  3185. Given this ability of OpenDoc, what CAN'T it do?
  3186.  
  3187.  
  3188.  
  3189. Lawson
  3190.  
  3191. +++++++++++++++++++++++++++
  3192.  
  3193. >From E.J. Draper <draper@utmdacc.mda.uth.tmc.edu>
  3194. Date: 30 Aug 1994 18:47:40 GMT
  3195. Organization: U.T.M.D. Anderson Cancer Center
  3196.  
  3197.  
  3198. >If anything, OpenDoc should make your documents MORE portable.  OpenDoc
  3199. >documents will be binary-compatible across all supported platforms. 
  3200.  
  3201. Bento, and not OpenDoc, is the technology that will enable us to do this.
  3202.  Bento can be used quite easily by software other than OpenDoc parts.
  3203.  
  3204. >Actually, OpenDoc has a great story for in-house MIS types. 
  3205.  
  3206. Wrong. Users who *do not* build *DOCUMENTS* will be annoyed at having to
  3207. artificially create documents and incorporate parts just to get something
  3208. done. The result of every human-machine interaction is *not* a document. 
  3209. OpenDoc is an interesting and useful addition to the concept of building
  3210. documents, but it's only interesting and useful in those terms.  
  3211.  
  3212. OLE has been around for quite some time and what has the industry
  3213. learned?  How many people are using OLE in mission critical applications
  3214. every day?  How many people are out there screaming for OLE versions of
  3215. Doom and Netware Client tools?  
  3216.  
  3217. >A good rule of thumb for what could and should be written as a part
  3218. editor is:
  3219. >"If it has a user interface, it should be a part."
  3220.  
  3221. I vehemently disagree.
  3222.  
  3223.  
  3224.       |E|J-  ED DRAPER
  3225.  rEpar|D|<-  Radiologic/Pathologic Institute
  3226.              The University of Texas M.D. Anderson Cancer Center
  3227.              draper@utmdacc.mda.uth.tmc.edu
  3228.  
  3229. +++++++++++++++++++++++++++
  3230.  
  3231. >From tbrown@magnus.acs.ohio-state.edu (Ted C Brown)
  3232. Date: 30 Aug 1994 19:15:12 GMT
  3233. Organization: The Ohio State University
  3234.  
  3235. In article <33vno2$gco@news.acns.nwu.edu>,
  3236. Robert Lentz <lentz@rossi.astro.nwu.edu> wrote:
  3237. >In article <33tgfn$r62@oac4.hsc.uth.tmc.edu>,
  3238. >E.J. Draper  <draper@utmdacc.mda.uth.tmc.edu> wrote:
  3239. >>...
  3240. >>It seems like the whole OpenDoc paradigm starts breaking down after you
  3241. >>get past the Graphic+MooV+Text+Spreadsheet model.
  3242. >
  3243. >Well, that covers all the basic types which other applications use too.
  3244. >
  3245. >Let's see: newsreader using a text part for composing messages, same with
  3246. >mail program; perhaps sometimes using a WWW part for displaying HTML
  3247. >documents, which then uses the text part and any necessary graphics parts
  3248. >again...
  3249.  
  3250. Having the "display HTML" part available would make any text editor closer
  3251. to a graphical HTML editor.  All the "Helper" apps would fold within
  3252. the document as well (but there isn't much gain here).  Sure make it 
  3253. easier to add the option-click on URL in Newswatcher though.
  3254.  
  3255. Also, having all the parts work within OpenDoc makes it easier to have a
  3256. central point that all such apps go to get user information. No more
  3257. constant filling out email/server names for each new net application that
  3258. is installed.  I know this could be done some other way -- but it seems it
  3259. would be simple in OpenDoc.  The OpenDoc method might allow two people to 
  3260. have open connects at the same time, something you can't do currently with
  3261. net packages. If someone else wants to read mail with Eudora on my 
  3262. machine, I have to quit Eudora so they can restart it with the proper settings
  3263. file.
  3264.  
  3265.  
  3266.  
  3267. +++++++++++++++++++++++++++
  3268.  
  3269. >From edcessna@netcom.com (Edward Cessna)
  3270. Date: Tue, 30 Aug 1994 12:54:59 -0700
  3271. Organization: Disney
  3272.  
  3273. >     An OpenDoc or OLE-based creation system for multimedia content
  3274. > would make sense, but that's an extension of the word processor metaphor.
  3275. >     The whole multi-source document concept is useful, but only for things
  3276. > that naturally have a document metaphor.
  3277.  
  3278. This also applies to client/server applications where the data being
  3279. retrieved from a database determines what the user sees on the screen.
  3280.  
  3281. > jdelkins@lilly.com (Joel D. Elkins) wrote:
  3282. > Aside...
  3283. >   Q: What is the difference between a "form" and a "document"?
  3284. >   A: A form only has 1 page, but document's have a lot!  :-)
  3285.  
  3286. There is a bigger difference between forms and documents: forms have a
  3287. rigid structure whereas documents do not. You can change the structure of
  3288. a document but *not* of a form (I wish I could change the structure of my
  3289. 1040 every April 15--sigh).
  3290.  
  3291. You could have a database query part that could be embedded within an
  3292. OpenDoc document. Editing the query part would mean change the query
  3293. statement defined within it. What you would see in the document would be
  3294. the results of the query. As for a database browser as an OpenDoc part, I
  3295. don't believe that this would yield anything meaningful (akin to putting
  3296. the finder in a OpenDoc document?). If anything, a database browser (a
  3297. database application) would end up being an OpenDoc container application.
  3298.  
  3299. When I use the term "database browser" I mean an application that could
  3300. visit the various data within a database, allow the user to select
  3301. something and, optionally, modify it. The user would also have the ability
  3302. to delete old information and to insert new information.
  3303.  
  3304. I'm not trying to imply that OpenDoc isn't useful to client/server
  3305. applications, I just do not see how the document-centered approach would
  3306. be practical. Other aspect of OpenDoc, like distributive objects, would be
  3307. very useful however.
  3308.  
  3309. -- Edward Cessna
  3310. -- Walt Disney Pictures and Television
  3311.  
  3312. +++++++++++++++++++++++++++
  3313.  
  3314. >From h+@nada.kth.se (Jon W{tte)
  3315. Date: Tue, 30 Aug 1994 22:29:13 +0200
  3316. Organization: Royal Institute of Something or other
  3317.  
  3318. In article <jdelkins-3008940939270001@m25567.d51.lilly.com>,
  3319. jdelkins@lilly.com (Joel D. Elkins) wrote:
  3320.  
  3321. >And what about client-server based apps, much in use by corporations today,
  3322. >for which the "document" paradigm really doesn't apply. Most of
  3323. >the c/s apps I've seen are more "forms" based. How will OpenDoc improve
  3324. >such apps? Unless it does, I don't see widespread acceptance by corporations
  3325. >for their in-house development efforts.
  3326.  
  3327. This is IDEAL for OpenDoc; you'd make forms as stationery of 
  3328. linked parts with AppleScript as the glue in the middle. 
  3329. Because you then can make a form of ANYTHING, you gain instant 
  3330. multimedia forms!
  3331.  
  3332. Cheers,
  3333.  
  3334.                     / h+
  3335.  
  3336.  
  3337. --
  3338.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  3339.  
  3340.   Reality exists only in your imagination.
  3341.  
  3342.  
  3343. +++++++++++++++++++++++++++
  3344.  
  3345. >From E.J. Draper <draper@utmdacc.mda.uth.tmc.edu>
  3346. Date: 30 Aug 1994 20:51:18 GMT
  3347. Organization: U.T.M.D. Anderson Cancer Center
  3348.  
  3349.  
  3350. >That's also a collection of an editor part, a news collection 
  3351. >part, ...
  3352.  
  3353. It seems that a great deal of the hype that surrounded AppleEvents before
  3354. the release of System 7 is being recycled in OpenDoc propaganda. 
  3355. Everyone heard that they were going to be able to use one spell check
  3356. program for all their needs.  They'd also use one graphics program, one
  3357. communications program, etc., etc..  Of course, all these programs were
  3358. going to communicate together to enrich the Macintosh experience and open
  3359. new profit channels for Apple and their developers.  So now we've got
  3360. shared libraries and the AppleEvent performance bottleneck is diminished.
  3361.  I'm still skeptical ...
  3362.  
  3363. >Your news reader comes with the SimpleText text edittig part. 
  3364. >Unfortunately, this part does not handle parts larger than 32k, 
  3365. >so to decode alt.binaries.pictures.erotica.jello, you instead 
  3366. >use the Alpha text editting part which handles larger 
  3367. >documents, and write a small script that scans the news 
  3368. >collection part for multi-part postings, uses Alpha to 
  3369. >concatenate them, uses the StuffIt mangling part to get an 
  3370. >image which you display in the JPEGView picture display part.
  3371.  
  3372. This solution would be inelegant, overly complex, neophyte hostile, and
  3373. slow.  What's so compelling about it?  
  3374.  
  3375.  
  3376. BTW- I did read the OpenDoc white paper.
  3377.  
  3378.  
  3379.       |E|J-  ED DRAPER
  3380.  rEpar|D|<-  Radiologic/Pathologic Institute
  3381.              The University of Texas M.D. Anderson Cancer Center
  3382.              draper@utmdacc.mda.uth.tmc.edu
  3383.  
  3384. +++++++++++++++++++++++++++
  3385.  
  3386. >From edcessna@netcom.com (Edward Cessna)
  3387. Date: Tue, 30 Aug 1994 14:21:56 -0700
  3388. Organization: Disney
  3389.  
  3390. In article <susser-3008941029470001@susser.apple.com>, susser@apple.com
  3391. (Joshua Susser) wrote:
  3392.  
  3393. > Actually, OpenDoc has a great story for in-house MIS types.  They have two
  3394. > big desires - being able to use COTS (Commercial Off The Shelf) Software,
  3395. > and getting a vertical solution for their special needs.  Notice these two
  3396. > desires are in direct conflict.  But with component technology like
  3397. > OpenDoc, you can buy a set of COTS part editors and maybe only have to
  3398. > write one or two special purpose ones in house.  Then create standard
  3399. > stationery using these chosen editors, write some scripts to integrate the
  3400. > parts functionality, and presto, it's an instant vertical application,
  3401. > custom made for your department with mostly COTS components.
  3402.  
  3403. Interesting concept. So, when the user double-clicks on the stationery, a
  3404. document will be created and they will be able to do their work. Question:
  3405. is the structure of the document fixed? In other words, could the user
  3406. accidentally delete or change one or more of the part editors? If the
  3407. answer is yes, then this is a totally wash-out for our in-house users! We
  3408. would spend more time helping the users and they would get annoyed at
  3409. being able to "destroy" the app.
  3410.  
  3411. > As for client-server, OpenDoc supports the concept of what we've been
  3412. > calling an "embedded client".  Create a part editor that can operate as a
  3413. > client for a remote server.
  3414.  
  3415. This would be great for our in-house developers but not our users!
  3416.  
  3417. > A good rule of thumb for what could and should be written as a part editor is:
  3418. > "If it has a user interface, it should be a part."
  3419.  
  3420. I wish it was so...
  3421.  
  3422. > Well, my compile is done, so back to work...
  3423.  
  3424. So quickly? I think I got another 10 minutes to go on my link--sigh.
  3425.  
  3426. -- Edward Cessna
  3427. -- Walt Disney Pictures and Television
  3428.  
  3429. +++++++++++++++++++++++++++
  3430.  
  3431. >From rmah@panix.com (Robert Mah)
  3432. Date: Tue, 30 Aug 1994 17:39:12 -0500
  3433. Organization: One Step Beyond
  3434.  
  3435. edcessna@netcom.com (Edward Cessna) wrote:
  3436.  
  3437. ) There is a bigger difference between forms and documents: forms have a
  3438. ) rigid structure whereas documents do not. You can change the structure of
  3439. ) a document but *not* of a form (I wish I could change the structure of my
  3440. ) 1040 every April 15--sigh).
  3441. ) You could have a database query part that could be embedded within an
  3442. ) OpenDoc document. Editing the query part would mean change the query
  3443. ) ...
  3444.  
  3445. I think you're putting too much emphasis on the term "document" here.
  3446. Nothing in OpenDoc says that the user _must_ be able to manipulate the
  3447. layout of the individual parts in a document/form.
  3448.  
  3449. That is dependent upon a piece of software called something like the 
  3450. "framework" or "layout" app.  You could easily, create a "forms" based 
  3451. part layout application that prevented the user from modifing the
  3452. underlying part layout/structure.
  3453.  
  3454. Cheers,
  3455. Rob
  3456. _____________________________________________________________________
  3457. Robert S. Mah           Software Development          +1.212.947.6507
  3458. One Step Beyond        and Network Consulting          rmah@panix.com
  3459.  
  3460. +++++++++++++++++++++++++++
  3461.  
  3462. >From afcjlloyd@aol.com (AFC JLloyd)
  3463. Date: 30 Aug 1994 17:40:02 -0400
  3464. Organization: America Online, Inc. (1-800-827-6364)
  3465.  
  3466. In article <33vusc$n5d@oac4.hsc.uth.tmc.edu>, E.J. Draper
  3467. <draper@utmdacc.mda.uth.tmc.edu> writes:
  3468.  
  3469. >>Actually, OpenDoc has a great story for in-house MIS types. 
  3470. >
  3471. >Wrong. Users who *do not* build *DOCUMENTS* will be annoyed at having to
  3472. >artificially create documents and incorporate parts just to get something
  3473. >done. The result of every human-machine interaction is *not* a document. 
  3474. >OpenDoc is an interesting and useful addition to the concept of building
  3475. >documents, but it's only interesting and useful in those terms.  
  3476.  
  3477. Perhaps the term "document" is misleading you.  If you grok
  3478. object-oriented programming, substitute the concept "object" for a while. 
  3479. In its most basic definition, an "object" is something that has state,
  3480. behavior, and identity (see Booch, Object Oriented Design).  A document,
  3481. while on disk, is simply state and identity.  When the document is opened,
  3482. OpenDoc dynamically binds the state to a part editor, which provides the
  3483. behavior.  A stationery document, by the way, is like a class -- a
  3484. template for instantiating objects with default state.
  3485.  
  3486. If you think in these more generic terms, I expect many of your objections
  3487. will disappear.  In all human-machine interaction, the machine is
  3488. displaying some visual representation for some state.  If you're concerned
  3489. that OpenDoc won't work for things like databases because the database
  3490. records can't be placed in Bento containers, then you just need to
  3491. consider that the state stored in the Bento containers might be simply a
  3492. "pointer" (or query, etc.) to where the data is actually stored.  This
  3493. results in "dynamically updated" objects -- the query doesn't change by
  3494. the answer does.  Document's like this will need to have a piece of state
  3495. that says how often the query should be repeated in order to keep the
  3496. displayed data up to date.
  3497.  
  3498. >OLE has been around for quite some time and what has the industry
  3499. >learned?  How many people are using OLE in mission critical applications
  3500. >every day?  How many people are out there screaming for OLE versions of
  3501. >Doom and Netware Client tools?
  3502.  
  3503. You're right.  No one is screaming for OLE or OpenDoc tools.  This doesn't
  3504. mean users won't very much appreciate (and ultimately demand) these kinds
  3505. of tools, once they are done right.  As I recall, most DOS users weren't
  3506. screaming for GUI's until well after Microsoft did their third iteration
  3507. of attempting to copy the Macintosh.  Users don't usually scream for a
  3508. solution, they just grumble about problems.  However, once they see a good
  3509. solution, they will generally scream if they aren't allowed to use the
  3510. solution.  This is even true of DOS users, they're just a bit slow ;-).
  3511.   
  3512. >
  3513. >>A good rule of thumb for what could and should be written as a part
  3514. >editor is:
  3515. >>"If it has a user interface, it should be a part."
  3516. >
  3517. >I vehemently disagree.
  3518.  
  3519. Not everything that has a user interface *should* be made into a part, but
  3520. just about anything with a UI *could* be made into a part, and doing so
  3521. would provide a lot of flexibility that currently doesn't exist.  As in
  3522. all engineering endeavors, one should do a costs/benefits analysis first.
  3523.  
  3524. Jim Lloyd
  3525. afcjlloyd@aol.com -or- Jim_Lloyd@powertalk.apple.com
  3526.  
  3527.  
  3528.  
  3529. +++++++++++++++++++++++++++
  3530.  
  3531. >From afcjlloyd@aol.com (AFC JLloyd)
  3532. Date: 30 Aug 1994 20:53:02 -0400
  3533. Organization: America Online, Inc. (1-800-827-6364)
  3534.  
  3535. In article <340646$o0q@oac4.hsc.uth.tmc.edu>, E.J. Draper
  3536. <draper@utmdacc.mda.uth.tmc.edu> writes:
  3537.  
  3538. >>That's also a collection of an editor part, a news collection 
  3539. >>part, ...
  3540. >
  3541. >It seems that a great deal of the hype that surrounded AppleEvents before
  3542. >the release of System 7 is being recycled in OpenDoc propaganda. 
  3543. >Everyone heard that they were going to be able to use one spell check
  3544. >program for all their needs.  They'd also use one graphics program, one
  3545. >communications program, etc., etc..  Of course, all these programs were
  3546. >going to communicate together to enrich the Macintosh experience and open
  3547. >new profit channels for Apple and their developers.  So now we've got
  3548. >shared libraries and the AppleEvent performance bottleneck is diminished.
  3549. > I'm still skeptical ...
  3550.  
  3551. When new technologies are introduced, the "vision" of the "visionaries"
  3552. who create the technology has to be communicated.  Visionaries aren't
  3553. perfect, they will often be wrong in the details, even if they are right
  3554. in the generalities.  So what if we don't yet have a universal spelling
  3555. checker?  It may still happen, and it may not.  AppleEvents has already
  3556. resulted in a lot of value, and is an enabling technology that will only
  3557. become more important over time.  If you feel bitter because of hype that
  3558. hasn't become true, I suggest you develop your ability to read between the
  3559. lines when presented with hype.
  3560.  
  3561. >>Your news reader comes with the SimpleText text edittig part. 
  3562. >>Unfortunately, this part does not handle parts larger than 32k, 
  3563. >>so to decode alt.binaries.pictures.erotica.jello, you instead 
  3564. >>use the Alpha text editting part which handles larger 
  3565. >>documents, and write a small script that scans the news 
  3566. >>collection part for multi-part postings, uses Alpha to 
  3567. >>concatenate them, uses the StuffIt mangling part to get an 
  3568. >>image which you display in the JPEGView picture display part.
  3569. >
  3570. >This solution would be inelegant, overly complex, neophyte hostile, and
  3571. >slow.  What's so compelling about it?  
  3572.  
  3573. I won't comment on something as subjective as "elegance".
  3574.  
  3575. The solution may be "complex", but a lot is happening.  If a specific
  3576. complex problem can be solved by breaking it down into subproblems that
  3577. can each be solved with off-the-shelf parts, then complexity is reduced,
  3578. not increased.
  3579.  
  3580. Requiring a neophyte to do the above from scratch would certainly be
  3581. hostile, but if you provide that neophyte with a previously prepared
  3582. stationery document, it should be no more hostile than a traditional
  3583. solution for this kind of application.
  3584.  
  3585. Finally, why should the above be slow?  Almost all of the computation is
  3586. I/O bound.  The slowest part of the implementation would be the execution
  3587. speed of the scripts, and this would be dominated by the I/O.
  3588.  
  3589. Jim Lloyd
  3590. afcjlloyd@aol.com -or- Jim_Lloyd@powertalk.apple.com
  3591.  
  3592.  
  3593. +++++++++++++++++++++++++++
  3594.  
  3595. >From gurgle@dnai.com (Pete Gontier)
  3596. Date: Tue, 30 Aug 1994 19:13:38 -0800
  3597. Organization: Integer Poet Software
  3598.  
  3599. In article <340646$o0q@oac4.hsc.uth.tmc.edu>, E.J. Draper
  3600. <draper@utmdacc.mda.uth.tmc.edu> wrote:
  3601.  
  3602. > So now we've got shared libraries and the AppleEvent performance
  3603. > bottleneck is diminished. I'm still skeptical ...
  3604.  
  3605. Do you believe it's the case that AppleEvents and AppleScript haven't
  3606. happened according to the hype because of the performance overhead
  3607. associated with AppleEvents? If so, I urge you to figure out exactly how
  3608. to write an OSA-compliant app without attending a class at Apple DU. It
  3609. takes a long time, and that's if you're actually enthusiastic enough about
  3610. the ideas to try hard. It's not that the concepts are overly confusing;
  3611. the documentation simply isn't good. There are other problems (for example
  3612. the lack of compile-time type-checking when building AppleEvents and
  3613. Object Specifiers), but the problem is certainly not performance.
  3614.  
  3615. -- 
  3616.  Pete Gontier // CTO, Integer Poet Software // gurgle@dnai.com
  3617.  
  3618.  "Even during a particularly harsh (Colorado) winter... many of the
  3619.  300 families in the VCTV (movies-on-demand) trial continued to go
  3620.  to video stores." -- eis@murrow.tufts.edu, in Wired 2.09 p62
  3621.  
  3622. +++++++++++++++++++++++++++
  3623.  
  3624. >From Bruce@hoult.actrix.gen.nz (Bruce Hoult)
  3625. Date: Wed, 31 Aug 1994 13:18:42 +1200 (NZST)
  3626. Organization: (none)
  3627.  
  3628. E.J. Draper <draper@utmdacc.mda.uth.tmc.edu> writes:
  3629. > >> > edit them with appropriate tools.  It's sort of "Publish and Subscribe,
  3630. > >> > The Next Generation".  Yes, you can do other stuff, but the touted
  3631. > How many times a day do you use Publish and Subscribe?  
  3632. > The one, and only, application I have for Publish and Subscribe
  3633. > technology is checking the amount of vacation hours I've got coming to me
  3634. > from the departmental spreadsheet.  I use it once a week at the most,
  3635. > probably more like once a month. 
  3636.  
  3637. You might not use publish&subscribe.  I know that, as a programmer, doing
  3638. programmer things, I don't.
  3639.  
  3640. But in the office I support, there is a huge structure of linked spreadsheets,
  3641. graphics documents and word processing documents, all linked together by
  3642. publish&subscribe.
  3643.  
  3644. Eventually, we'd like to have all this managed by a proper database system,
  3645. but for now Publish&subscribe is a huge improvement over the alternatives,
  3646. even if the performance does stink (especially in Excel).
  3647.  
  3648. -- Bruce
  3649.  
  3650. +++++++++++++++++++++++++++
  3651.  
  3652. >From scouten@uiuc.edu (Eric Scouten)
  3653. Date: Tue, 30 Aug 1994 23:49:14 -0500
  3654. Organization: University of Illinois
  3655.  
  3656. In article <edcessna-3008941421560001@153.7.11.4>, edcessna@netcom.com
  3657. (Edward Cessna) wrote:
  3658.  
  3659. > In article <susser-3008941029470001@susser.apple.com>, susser@apple.com
  3660. > (Joshua Susser) wrote:
  3661. > > Actually, OpenDoc has a great story for in-house MIS types.
  3662. > Interesting concept. So, when the user double-clicks on the stationery, a
  3663. > document will be created and they will be able to do their work. Question:
  3664. > is the structure of the document fixed? In other words, could the user
  3665. > accidentally delete or change one or more of the part editors? If the
  3666. > answer is yes, then this is a totally wash-out for our in-house users! We
  3667. > would spend more time helping the users and they would get annoyed at
  3668. > being able to "destroy" the app.
  3669.  
  3670. I believe in the OpenDoc white paper, there's a section on "access
  3671. control" that addresses just this issue. Can't remember exactly how it's
  3672. implemented, but I don't think the system is as naive as you have
  3673. suggested.
  3674.  
  3675. -Eric
  3676.  
  3677. __________________________________________________________________________
  3678. Eric Scouten <scouten@uiuc.edu> * MS Comp Sci, Univ of Illinois
  3679.  
  3680. The Pledge of Allegiance says, "liberty and justice for all."
  3681. Which part of "all" don't you understand?
  3682.    -Rep. Pat Schroeder
  3683.  
  3684. +++++++++++++++++++++++++++
  3685.  
  3686. >From quinlan@kits.sfu.ca (Brian Quinlan)
  3687. Date: 31 Aug 94 06:20:31 GMT
  3688. Organization: Simon Fraser University
  3689.  
  3690. nagle@netcom.com (John Nagle) writes:
  3691.  
  3692. >    The whole development environment shouldn't be a structured document,
  3693. >but source programs might be.  Programs today have parts which are visual
  3694. >and parts which are textual, and those parts need to be better connected.
  3695. >HyperCard already does this.
  3696.  
  3697. I'll have to disagree here. I would love to see my program as a flowchart,
  3698. object relation diagram or dataflow diagram. When I click on a box 
  3699. representing an object, method or function I would get an editor. It could
  3700. click on a line and get an interface editor. 
  3701.  
  3702. >    You could, but why would you want to embed those functions in a
  3703. >structured document?  A document is the wrong metaphor for that collection
  3704. >of functions.  There's no content in which you're embedding those
  3705. >functions.  A multiwindow application is more appropriate.
  3706.  
  3707. Your right, I was grasping at straws here. 
  3708.  
  3709. >    An OpenDoc or OLE-based creation system for multimedia content
  3710. >would make sense, but that's an extension of the word processor metaphor.
  3711.  
  3712. True, it is most easy to see the benifits for a word processor but
  3713. I think it would be helpful in other situations as well. I think that
  3714. for OpenDoc to be usefull you need to be working on some sort of document.
  3715. When programming you do use documents (rez, source, etc.) and you could
  3716. use OpenDoc to integrate these parts into a unified whole.
  3717.  
  3718. >    The whole multi-source document concept is useful, but only for things
  3719. >that naturally have a document metaphor.
  3720.  
  3721. I wish I had read this more carefully before making my last comment!
  3722.  
  3723.  
  3724. +++++++++++++++++++++++++++
  3725.  
  3726. >From hanrek@cts.com (Mark Hanrek)
  3727. Date: 31 Aug 1994 09:23:21 GMT
  3728. Organization: The Information Workshop
  3729.  
  3730. In article <gurgle-3008941913380001@gurgle.dnai.com>, gurgle@dnai.com
  3731. (Pete Gontier) wrote:
  3732.  
  3733. > Do you believe it's the case that AppleEvents and AppleScript haven't
  3734. > happened according to the hype because of the performance overhead
  3735. > associated with AppleEvents? If so, I urge you to figure out exactly how
  3736. > to write an OSA-compliant app without attending a class at Apple DU. It
  3737. > takes a long time, and that's if you're actually enthusiastic enough about
  3738. > the ideas to try hard. It's not that the concepts are overly confusing;
  3739. > the documentation simply isn't good. There are other problems (for example
  3740. > the lack of compile-time type-checking when building AppleEvents and
  3741. > Object Specifiers), but the problem is certainly not performance.
  3742.  
  3743.  
  3744. Pete,
  3745.  
  3746. I agree 100%, as someone who has spent a good deal of time with those subjects.
  3747.  
  3748. There is a "difficulty barrier" in assimilating the AE/AS technologies
  3749. which need not exist.  There could easily be certain materials and/or
  3750. utilities that would help make Apple events and related subjects easy to
  3751. deal with.
  3752.  
  3753. These technologies have now become "fundamental" and "required".
  3754.  
  3755. Hopefully Apple will be able to help turn this molasses back into water.
  3756.  
  3757. I get the feeling that it is just a matter of time until this boil will
  3758. need to be lanced.  
  3759.  
  3760.  
  3761. - ---- Visibility
  3762.  
  3763. I believe "visibility" is one leveraged key to success here.
  3764.  
  3765. If we had doohickies that showed Apple events moving around, allowed us to
  3766. examine them as AEGizmo-like things on screen, and had materials that made
  3767. clear the relationships between AppleScript statements, aete resources,
  3768. and object accessors, kinda thing, there'd likely be a lot more happening.
  3769.  
  3770. Extrapolating from the past, it will probably be some time before there
  3771. any new relief here from Apple. This topic could have been clarified years
  3772. ago.
  3773.  
  3774. If only we [the development community] had the ability to "turn up the
  3775. volume" with these technologies ourselves.
  3776.  
  3777.  
  3778. - ---- Interesting Alternative
  3779.  
  3780. One major event which has yet to happen is for the Macintosh Development
  3781. Community to organize itself, and consequently have for the first time the
  3782. realistic opportunity to "see to some of its own needs", drawn from its
  3783. own resources.
  3784.  
  3785. In many instances, it is not appropriate to expect that Apple is supposed
  3786. to provide a solution, or even to have an accurate perception of its
  3787. development community.  We accidentally think Apple should solve our
  3788. problems or understand us because we are generally powerless to do
  3789. anything beyond what our spare time will allow.
  3790.  
  3791. But the organized spare time of 10 programmers can accomplish some
  3792. significant things.  Or a seed planted by one programmer, and refined 10
  3793. times over.
  3794.  
  3795. Unfortunately, the event of us organizing ourselves won't likely be able
  3796. to occur until true electronic forums are available on the Internet. 
  3797. Forums provide the means of easily developing consensus, electing
  3798. leadership or an agenda, and facilitating collaboration, among other
  3799. essentials.
  3800.  
  3801. There's that "forum" word again.  Interesting, eh?
  3802.  
  3803. :) :) 
  3804.  
  3805. Mark "a-newsgroup-is-not-a-forum" Hanrek
  3806. The Information Workshop
  3807.  
  3808. +++++++++++++++++++++++++++
  3809.  
  3810. >From sw@network-analysis-ltd.co.uk (Sak Wathanasin)
  3811. Date: Wed, 31 Aug 94 09:57:57 BST
  3812. Organization: Network Analysis Ltd
  3813.  
  3814.  
  3815. In article <nagleCvCwzu.EF2@netcom.com> (comp.sys.mac.programmer), nagle@netcom.com (John Nagle) writes:
  3816. > >You could have a basis upon which you had a newsreader, email and ftp parts.
  3817. >     You could, but why would you want to embed those functions in a
  3818. > structured document?  A document is the wrong metaphor for that collection
  3819.  
  3820. I'd have thought it would be the other way round - the doucment would
  3821. be in the mail or news article. Or better, the mail message or news
  3822. article would be the document. That's the way it worked with Xerox
  3823. Viewpoint - when you got something in the mailbox, you opened it and
  3824. there would (sometimes) be a header part and the rest would be the
  3825. document. You didn't have to save an attachment or anything; it could
  3826. be dragged on to the desktop and operated on as a normal WP document.
  3827.  
  3828. Xerox VP had quite a few of the OpenDoc ideas implemented (although OD
  3829. goes much further, of course). Appl-centric and doc-centric objects can
  3830. co-exist quite happily. Or at least I didn't go around clutching my
  3831. head screaming "Oh, my God! Is that an appl or document object?" I just
  3832. double-clicked on it and went about my business...
  3833.  
  3834.  
  3835. Sak Wathanasin
  3836. Network Analysis Limited
  3837. 178 Wainbody Ave South, Coventry CV3 6BX, UK
  3838.  
  3839. Internet: sw@network-analysis-ltd.co.uk 
  3840. uucp:     ...!uknet!nan!sw                       AppleLink: NAN.LTD
  3841. Phone: (+44) 203 419996 Mobile:(+44) 850 587411  Fax: (+44) 203 690690
  3842.  
  3843. +++++++++++++++++++++++++++
  3844.  
  3845. >From h+@nada.kth.se (Jon W{tte)
  3846. Date: Wed, 31 Aug 1994 12:07:57 +0200
  3847. Organization: Royal Institute of Something or other
  3848.  
  3849. In article <edcessna-3008941421560001@153.7.11.4>,
  3850. edcessna@netcom.com (Edward Cessna) wrote:
  3851.  
  3852. >is the structure of the document fixed? In other words, could the user
  3853.  
  3854. Yes; you can lock the frames of parts in OpenDoc compound 
  3855. documents. This is in the white paper.
  3856.  
  3857. Cheers,
  3858.  
  3859.                 / h+
  3860.  
  3861.  
  3862. --
  3863.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  3864.  
  3865.   Reality exists only in your imagination.
  3866.  
  3867.  
  3868. +++++++++++++++++++++++++++
  3869.  
  3870. >From h+@nada.kth.se (Jon W{tte)
  3871. Date: Wed, 31 Aug 1994 12:07:59 +0200
  3872. Organization: Royal Institute of Something or other
  3873.  
  3874. In article <340646$o0q@oac4.hsc.uth.tmc.edu>,
  3875. E.J. Draper <draper@utmdacc.mda.uth.tmc.edu> wrote:
  3876.  
  3877. >This solution would be inelegant, overly complex, neophyte hostile, and
  3878. >slow.  What's so compelling about it?  
  3879.  
  3880. The neophyte buys a pre-configured stationery/part editor 
  3881. bundle that behaves as an integrated whole.
  3882.  
  3883. The non-neophyte can go in and change whatever he wants in the 
  3884. bundle to make it fit his needs.
  3885.  
  3886. The information systems people in an organization can use 
  3887. off-the-shelf parts and their own custom glue to create needed 
  3888. applications.
  3889.  
  3890. Cheers,
  3891.  
  3892.                 / h+
  3893.  
  3894.  
  3895. --
  3896.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  3897.  
  3898.   Reality exists only in your imagination.
  3899.  
  3900.  
  3901. +++++++++++++++++++++++++++
  3902.  
  3903. >From philip@cs.wits.ac.za (Philip Machanick)
  3904. Date: 31 Aug 1994 13:05:05 GMT
  3905. Organization: Computer Science Dept, U of Witwatersrand
  3906.  
  3907. In article <33tgfn$r62@oac4.hsc.uth.tmc.edu>, E.J. Draper
  3908. <draper@utmdacc.mda.uth.tmc.edu> wrote:
  3909.  
  3910. > I can see some interesting applications of OpenDoc technology, but I
  3911. > certainly don't feel it's as mind-boggling awesome as the market-droids
  3912. > would have us think.  What's OpenDoc going to do for me?  Does a compiler
  3913. > part make sense?  How about news reader part?  An email part? A PIM part?
  3914.  
  3915. Compiler makes sense - but you are not trying to think of where the
  3916. "document" comes in. Look at something like CodeWarrior or ThinkC. Each
  3917. item in the project file is a part. You can open it to a window, you can
  3918. drag it around in the project. Cut, copy, paste are less obvious - maybe
  3919. there is use for these.
  3920.  
  3921. News reader the same thing. A newsreader consists of a number of documents
  3922. with different behaviours. If you don't use NewsWatcher you may not see
  3923. the possibilities. NewsWatcher has features like extract binhex, fetch ftp
  3924. from reference in article etc. Such things could be added as new
  3925. behaviours in a news document. On the other hand some web viewers allow
  3926. you to retrieve news articles. OpenDoc could make for much more seemless
  3927. integration of all these things. Imagine: a different part handler for
  3928. each kind of URL.
  3929.  
  3930. > A Resorcerer part?  How does OpenDoc improve the way that people work
  3931. > with information?  Does it make the computer more approachable to novice
  3932. > users?  What specific problem is it trying to solve?
  3933.  
  3934. It's trying to solve the problem of the monolith application. All these
  3935. people who are compaining that the Mac doesn't have proper protection etc.
  3936. are right, only they are too late. The application of today is bigger and
  3937. more complex than the operating system of the time when schedulers, paging
  3938. etc. were invented (VM goes back to the 1950s). What is needed now is a
  3939. way of putting together complex behaviour in smaller packages. Look up
  3940. Brad Cox's book on software ICs (I forget the title). OpenDoc is a
  3941. framework for plugging together software ICs - call it a software PCB. Not
  3942. that protection etc. should not be addressed - but _only_ adding
  3943. protection and pre-emption would give us a good 1970s OS without
  3944. addressing the monolithic app problem. With a good OS underneath it
  3945. OpenDoc could turn out to be a dinosaur killer.
  3946.  
  3947. The underlying idea is not new. The Xerox Star was programmed like this
  3948. and Apple has some of the people who were at Parc at the time pushing it
  3949. along.
  3950.  
  3951. > It seems like the whole OpenDoc paradigm starts breaking down after you
  3952. > get past the Graphic+MooV+Text+Spreadsheet model.
  3953.  
  3954. It breaks down when you can't conceive of what you are doing as
  3955. manipulating a document. The same thing was true of understanding why
  3956. windowed interfaces are better than command line interfaces. Some people
  3957. still don't get it :( but some of us are very happy programming in
  3958. windowed environments like CodeWarrior.
  3959. -- 
  3960. Philip Machanick                   philip@cs.wits.ac.za
  3961. Department of Computer Science, University of the Witwatersrand
  3962. 2050 Wits, South Africa        (at University of Cape Town 4 July-7 Nov)
  3963. phone 27(11)716-3309  fax 27(11)339-7965
  3964.  
  3965. +++++++++++++++++++++++++++
  3966.  
  3967. >From philip@cs.wits.ac.za (Philip Machanick)
  3968. Date: 31 Aug 1994 13:14:39 GMT
  3969. Organization: Computer Science Dept, U of Witwatersrand
  3970.  
  3971. In article <nagleCvC1vy.LGI@netcom.com>, nagle@netcom.com (John Nagle) wrote:
  3972. >       I think he has a point.  I can imagine a CAD system based on this
  3973. > approach, where you click on a subassembly to get to the detailed drawings.
  3974. > But that doesn't even fit the OpenDoc model, which is 2D, not 3D.
  3975. > What, besides embed stuff in word processor documents, is one really likely
  3976. > to do with OpenDoc?
  3977.  
  3978. Embed word processing in graphics documents :) In what sense are you
  3979. saying OpenDoc is 2D? It is based on frames which can have an arbitrary
  3980. shape so I suppose there is potentially a problem implementing a part
  3981. picker that is aware of depth. It is possible this could be layered on top
  3982. of the model of passing messages to contained parts. Maybe someone who has
  3983. gone further into detail could answer this.
  3984.  
  3985. >       By the way, how does OpenDoc do version management?
  3986.  
  3987. At some point in the history of a document you can start a new edition,
  3988. and go back to previous editions.
  3989.  
  3990. Since there is supposed to be support for cross-platform collaborative
  3991. editing, there ought to be more sophisticated features, but I have seen
  3992. nothing about this.
  3993.  
  3994. There are a lot of potential problems with OpenDoc but it is a real
  3995. attempt at rethinking the document-application relationship. I would like
  3996. to see how it develops. I'm less sure about all the weird infrastructure
  3997. it's being pinned onto though - a good simple kernel plus an
  3998. object-oriented language with better dynamic binding than C++ would have
  3999. been a better start.
  4000. -- 
  4001. Philip Machanick                   philip@cs.wits.ac.za
  4002. Department of Computer Science, University of the Witwatersrand
  4003. 2050 Wits, South Africa        (at University of Cape Town 4 July-7 Nov)
  4004. phone 27(11)716-3309  fax 27(11)339-7965
  4005.  
  4006. +++++++++++++++++++++++++++
  4007.  
  4008. >From lentz@rossi.astro.nwu.edu (Robert Lentz)
  4009. Date: 31 Aug 1994 14:40:12 GMT
  4010. Organization: Northwestern University, Evanston, Illinois, USA
  4011.  
  4012. In article <340k9e$mdv@search01.news.aol.com>,
  4013. AFC JLloyd <afcjlloyd@aol.com> wrote:
  4014. >...
  4015. >When new technologies are introduced, the "vision" of the "visionaries"
  4016. >who create the technology has to be communicated.  Visionaries aren't
  4017. >perfect, they will often be wrong in the details, even if they are right
  4018. >in the generalities.  So what if we don't yet have a universal spelling
  4019. >checker?  It may still happen, and it may not.  AppleEvents has already
  4020. >resulted in a lot of value, and is an enabling technology that will only
  4021. >become more important over time.  If you feel bitter because of hype that
  4022. >hasn't become true, I suggest you develop your ability to read between the
  4023. >lines when presented with hype.
  4024. >...
  4025.  
  4026. And complain to those developers that have not seen the light. Would it not
  4027. be nice to be able to ask Word to spell check a document for you? 
  4028.  
  4029. -Robert
  4030. -- 
  4031. lentz@rossi.astro.nwu.edu            http://www.astro.nwu.edu/lentz/plan.html
  4032.     "You have to push as hard as the age that pushes against you."
  4033.                     -Flannery O'Connor
  4034.  
  4035.  
  4036. +++++++++++++++++++++++++++
  4037.  
  4038. >From Jaeger@fquest.com (Brian Stern)
  4039. Date: 31 Aug 1994 15:24:32 GMT
  4040. Organization: The University of Texas at Austin, Austin, Texas
  4041.  
  4042. In article <hanrek-3108940225330001@auke.cts.com>, hanrek@cts.com (Mark
  4043. Hanrek) wrote:
  4044.  
  4045.  
  4046. < ------ Interesting Alternative
  4047. < One major event which has yet to happen is for the Macintosh Development
  4048. < Community to organize itself, and consequently have for the first time the
  4049. < realistic opportunity to "see to some of its own needs", drawn from its
  4050. < own resources.
  4051.  
  4052. You're right, we're not organized.
  4053.  
  4054. < In many instances, it is not appropriate to expect that Apple is supposed
  4055. < to provide a solution, or even to have an accurate perception of its
  4056. < development community.  We accidentally think Apple should solve our
  4057. < problems or understand us because we are generally powerless to do
  4058. < anything beyond what our spare time will allow.
  4059.  
  4060. Yes, Apple does what it wants, what it has resources to do, and what it
  4061. *thinks* we want.
  4062.  
  4063. < But the organized spare time of 10 programmers can accomplish some
  4064. < significant things.  Or a seed planted by one programmer, and refined 10
  4065. < times over.
  4066.  
  4067. Absoluteley.
  4068.  
  4069. < Unfortunately, the event of us organizing ourselves won't likely be able
  4070. < to occur until true electronic forums are available on the Internet. 
  4071. < Forums provide the means of easily developing consensus, electing
  4072. < leadership or an agenda, and facilitating collaboration, among other
  4073. < essentials.
  4074. < There's that "forum" word again.  Interesting, eh?
  4075.  
  4076. Here's where you lose me.  What does a forum have that a newsgroup doesn't
  4077. have?  Don't tell me archiving of every message because most of what's
  4078. posted here does not deserve to be saved for posterity.  If you want
  4079. something you have to ask for it.  And in a way that people understand
  4080. what it is that you're asking for.
  4081.  
  4082. I agree with you that the tools available and information available to us
  4083. are often inadequate.  Discussing that in this forum (sorry) is one way of
  4084. letting the tool/information providers know what we want.  If you want
  4085. something from the programming community this also a good place for
  4086. discussion of that.  My question is: What do you want?
  4087.  
  4088. < :) :) 
  4089. < Mark "a-newsgroup-is-not-a-forum" Hanrek
  4090. < The Information Workshop
  4091.  
  4092. -- 
  4093. Brian  Stern  :-{)}
  4094. Jaeger@fquest.com
  4095.  
  4096. +++++++++++++++++++++++++++
  4097.  
  4098. >From 103t_english@west.cscwc.pima.edu
  4099. Date: 31 Aug 94 15:29:30 MST
  4100. Organization: (none)
  4101.  
  4102. In article <Jaeger-3108941026460001@slip-1-36.ots.utexas.edu>, Jaeger@fquest.com (Brian Stern) writes:
  4103. > In article <hanrek-3108940225330001@auke.cts.com>, hanrek@cts.com (Mark
  4104. > Hanrek) wrote:
  4105. > < ------ Interesting Alternative
  4106. > < There's that "forum" word again.  Interesting, eh?
  4107. > < 
  4108.  
  4109. I think that Mark is hinting at a commercial project that he is working on, and
  4110. many of his posts, while they are valid, are simply an attempt to steer folks
  4111. to the conclusion that something remarkably similar to what he is planning on
  4112. marketing, is actually a good idea and that they would buy it.
  4113.  
  4114. I don't know if I am correct or not, but it feels this way to me.
  4115.  
  4116. Personally, I think it a REALLY GOOD marketing ploy if I am correct.
  4117.  
  4118. > Here's where you lose me.  What does a forum have that a newsgroup doesn't
  4119. > have?  Don't tell me archiving of every message because most of what's
  4120. > posted here does not deserve to be saved for posterity.  If you want
  4121. > something you have to ask for it.  And in a way that people understand
  4122. > what it is that you're asking for.
  4123. > I agree with you that the tools available and information available to us
  4124. > are often inadequate.  Discussing that in this forum (sorry) is one way of
  4125. > letting the tool/information providers know what we want.  If you want
  4126. > something from the programming community this also a good place for
  4127. > discussion of that.  My question is: What do you want?
  4128. > < :) :) 
  4129. > < 
  4130. > < Mark "a-newsgroup-is-not-a-forum" Hanrek
  4131. > < The Information Workshop
  4132. > -- 
  4133. > Brian  Stern  :-{)}
  4134. > Jaeger@fquest.com
  4135.  
  4136.  
  4137.  
  4138. Lawson
  4139.  
  4140. +++++++++++++++++++++++++++
  4141.  
  4142. >From nagle@netcom.com (John Nagle)
  4143. Date: Thu, 1 Sep 1994 05:14:15 GMT
  4144. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  4145.  
  4146. philip@cs.wits.ac.za (Philip Machanick) writes:
  4147. >It's trying to solve the problem of the monolith application. All these
  4148. >people who are compaining that the Mac doesn't have proper protection etc.
  4149. >are right, only they are too late. The application of today is bigger and
  4150. >more complex than the operating system of the time when schedulers, paging
  4151. >etc. were invented (VM goes back to the 1950s). What is needed now is a
  4152. >way of putting together complex behaviour in smaller packages. Look up
  4153. >Brad Cox's book on software ICs (I forget the title). OpenDoc is a
  4154. >framework for plugging together software ICs - call it a software PCB. Not
  4155. >that protection etc. should not be addressed - but _only_ adding
  4156. >protection and pre-emption would give us a good 1970s OS without
  4157. >addressing the monolithic app problem. With a good OS underneath it
  4158. >OpenDoc could turn out to be a dinosaur killer.
  4159.  
  4160.       PenPoint had the right idea on this.  It's worth looking at how
  4161. PenPoint worked internally.  Forget about the pen stuff (PenPoint was the
  4162. OS for the now-defunct EO, which failed mostly because a $4000 PDA was
  4163. too expensive); the document model in PenPoint looked good.  Like
  4164. OpenDoc, a document appeared as a number of areas on screen, with each
  4165. area maintained by a different application.  Unlike OpenDoc, each
  4166. application ran in a separate address space with full protection.
  4167. The notion of "application launch" was eliminated; as you scrolled through
  4168. a document, processes were created and terminated as required.
  4169.  
  4170.       PenPoint had no installed base with which they had to be compatible,
  4171. so they could use a much simpler architecture.  All PenPoint apps are
  4172. derived classes from base classes of the OS.  This makes apps much
  4173. smaller and simpler, and enforces standardization.  But it's not an
  4174. architecture you can retrofit.  
  4175.  
  4176.       The price we pay for backwards compatibility is seen in the
  4177. complexity of OLE and OpenDoc.
  4178.  
  4179.                     John Nagle
  4180.  
  4181. +++++++++++++++++++++++++++
  4182.  
  4183. >From h+@nada.kth.se (Jon W{tte)
  4184. Date: Thu, 01 Sep 1994 08:56:19 +0200
  4185. Organization: Royal Institute of Something or other
  4186.  
  4187. In article <3424oc$9ba@news.acns.nwu.edu>,
  4188. lentz@rossi.astro.nwu.edu (Robert Lentz) wrote:
  4189.  
  4190. >And complain to those developers that have not seen the light. Would it not
  4191. >be nice to be able to ask Word to spell check a document for you? 
  4192.  
  4193. No, because Word uses Houghton-Mifflin spell checking, which 
  4194. you can license yourself. Don't. Their Mac code would compile 
  4195. on a 1984 Mac, and that's it. It uses FSOpen(). It uses signed 
  4196. chars interchangeably with unsigned chars. Etc.
  4197.  
  4198. Their English dictionary is also nothing good unless you buy 
  4199. all the extra libraries.
  4200.  
  4201. Cheers,
  4202.  
  4203.                     / h+
  4204.  
  4205.  
  4206. --
  4207.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  4208.  
  4209.   Reality exists only in your imagination.
  4210.  
  4211.  
  4212. +++++++++++++++++++++++++++
  4213.  
  4214. >From philip@cs.uct.ac.za (Philip Machanick)
  4215. Date: 1 Sep 1994 10:08:40 +0200
  4216. Organization: Computer Science Department, University of Cape Town
  4217.  
  4218. Just curious.
  4219.  
  4220. I wonder how many of the people saying OpenDoc is no good - AAARGH NO!
  4221. IT'S CONFIGURABLE - THE USERS WILL BREAK IT - are the same ones who
  4222. used to run down the Mac because it isn't configurable like X.
  4223.  
  4224. I must say though I can have some empathy with this fear having
  4225. wasted large chunks of time trying to make X usable every time I
  4226. move to a new place.
  4227. --
  4228. Philip Machanick                      philip@cs.wits.ac.za
  4229. Computer Science Department, University of he Witwatesrand
  4230. 2050 Wits, South Africa 27(11)716-3309 fax 339-7965
  4231. (at University of Cape Town until November: 27(21)650-4058)
  4232.  
  4233. +++++++++++++++++++++++++++
  4234.  
  4235. >From h+@nada.kth.se (Jon W{tte)
  4236. Date: Thu, 01 Sep 1994 14:55:18 +0200
  4237. Organization: Royal Institute of Something or other
  4238.  
  4239. In article <nagleCvFqJs.A2x@netcom.com>,
  4240. nagle@netcom.com (John Nagle) wrote:
  4241.  
  4242. >      The price we pay for backwards compatibility is seen in the
  4243. >complexity of OLE and OpenDoc.
  4244.  
  4245. Guess what? In OpenDoc, all applications are subclasses of a 
  4246. system class, ODPart to be exact, and all storage is subclasses 
  4247. of ODStorageUnit (or whatever) etc. OpenDoc also requires total 
  4248. rewrite of everything; it's NOT designed to be backwards 
  4249. compatible (which OLE is, to some degree)
  4250.  
  4251. However, you're confusing the issues of an application runtime 
  4252. architecture with the issues of various OS support. There's no 
  4253. reason why OpenDoc parts cannot live in separate protected 
  4254. address spaces.
  4255.  
  4256. Cheers,
  4257.  
  4258.                 / h+
  4259.  
  4260.  
  4261. --
  4262.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  4263.  
  4264.   Reality exists only in your imagination.
  4265.  
  4266.  
  4267. +++++++++++++++++++++++++++
  4268.  
  4269. >From nagle@netcom.com (John Nagle)
  4270. Date: Thu, 1 Sep 1994 16:26:12 GMT
  4271. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  4272.  
  4273. >In article <hanrek-3108940225330001@auke.cts.com>, hanrek@cts.com (Mark
  4274. >Hanrek) wrote:
  4275. >< In many instances, it is not appropriate to expect that Apple is supposed
  4276. >< to provide a solution, or even to have an accurate perception of its
  4277. >< development community.  We accidentally think Apple should solve our
  4278. >< problems or understand us because we are generally powerless to do
  4279. >< anything beyond what our spare time will allow.
  4280.  
  4281. >Yes, Apple does what it wants, what it has resources to do, and what it
  4282. >*thinks* we want.
  4283.  
  4284.        Apple needs to realize that 1) the development tools for the
  4285. Macintosh are now inferior to those for Windows, and 2) this is Apple's
  4286. problem, whether Apple likes it or not.
  4287.  
  4288.                     John Nagle
  4289.  
  4290. +++++++++++++++++++++++++++
  4291.  
  4292. >From jonpugh@netcom.com (Jon Pugh)
  4293. Date: Thu, 1 Sep 1994 21:50:31 GMT
  4294. Organization: Will hack for food
  4295.  
  4296. John Nagle (nagle@netcom.com) wrote:
  4297.  
  4298. >        Apple needs to realize that 1) the development tools for the
  4299. > Macintosh are now inferior to those for Windows, and 2) this is Apple's
  4300. > problem, whether Apple likes it or not.
  4301.  
  4302. This is off the thread, but I just wanted to refute this statement.  We 
  4303. have just gone from all Mac development to doing some Windows development
  4304. too.  We had heard this line for some time but it does not jibe with our
  4305. experience.  We have yet to find a single tool that operates as nicely as
  4306. THINK, CW _or_ MPW.  Sure, some are faster, some have cool features, but
  4307. nothing works as well or as integrated.  Just trying to write some scripts
  4308. to mimic some of our MPW Projector scripts was a nightmare!
  4309.  
  4310. All in all, we should start a different thread and argue about this some
  4311. more.  Macintosh development tools are damn nice compared to the mess on
  4312. Windows.
  4313.  
  4314. Jon
  4315.  
  4316.  
  4317. +++++++++++++++++++++++++++
  4318.  
  4319. >From bobd@zaphod.UUCP (Bob Dalgleish)
  4320. Date: 2 Sep 94 16:12:19 GMT
  4321. Organization: Develcon Electronics Ltd., Saskatoon, SK, Canada
  4322.  
  4323. In article <susser-3008941029470001@susser.apple.com> susser@apple.com (Joshua Susser) writes:
  4324. >nagle@netcom.com (John Nagle) wrote:
  4325. >> E.J. Draper <draper@utmdacc.mda.uth.tmc.edu> writes:
  4326. >> >It seems like the whole OpenDoc paradigm starts breaking down after you
  4327. >> >get past the Graphic+MooV+Text+Spreadsheet model.
  4328. >> 
  4329. >>       I think he has a point.  I can imagine a CAD system based on this
  4330. >> approach, where you click on a subassembly to get to the detailed drawings.
  4331. >> But that doesn't even fit the OpenDoc model, which is 2D, not 3D.
  4332. >> What, besides embed stuff in word processor documents, is one really likely
  4333. >> to do with OpenDoc?
  4334. >
  4335. >OpenDoc windows and layout objects are 2D, because that's the
  4336. >dimensionality of the imaging devices available today (for the most
  4337. >part).  But we did leave enough room in the API to support 3D parts.  It
  4338. >should in fact be possible to embed a text part onto the surface of a 3D
  4339. >sphere part.
  4340. >
  4341. >But even without 3D, OpenDoc is suitable for much more than just a
  4342. >"Graphic+MooV+Text+Spreadsheet" kind of document.  See below.
  4343.  
  4344. I started to have a vision.  Having followed this thread for awhile, and
  4345. read through the WWDC documentation, installed BBEdit 3.0, Symantec C 7,
  4346. and MW CW, purchased and installed a *very expensive* CASE system, and
  4347. still being faced with elementary problems of envisioning software, I
  4348. started to see a trend.
  4349.  
  4350. Software project forms a document (in SC7, this is a project file), to
  4351. which are attached source files, object files, library files, resource
  4352. files, resource source files, and pretty much anything you want.  The
  4353. TPM uses the file suffix to assign a "part editor" to each type of file,
  4354. and "does the right thing" at the right time.  How does this differ from
  4355. an OpenDoc document with part editors for distinct parts, and a document
  4356. "application" co-ordinating the make process?
  4357.  
  4358. Even though we think of source code as a text file, we, in fact, treat
  4359. it as a specialized database of relationships.  Witness PopUpFuncs,
  4360. CMaster, ObjectMaster, and other extensions to the basic set of text
  4361. manipulation tools.  Someone else has suggested "Could I not see my
  4362. source code as a flow-chart, data-flow chart, decision table, coverage
  4363. checklist?"
  4364.  
  4365. The model we already use for software development is that of an OpenDoc
  4366. architecture with only three providers and some hangers-on.  A true
  4367. OpenDoc document for a development project would have resource editors,
  4368. text editors, compilers, graphers, analyzers, etc., as part editors that
  4369. could be applied at any time for any purpose that the devious minds of
  4370. developers can come up with.
  4371. >>       By the way, how does OpenDoc do version management?
  4372. >
  4373. >OpenDoc documents provide a facility for creating a named revision of your
  4374. >document called a "draft".  Each draft is basically a checkpoint of the
  4375. >state of the document.  You can create a new draft at any time, have as
  4376. >many as you like, open old drafts to compare to newer, etc.  There's
  4377. >lots more about drafts, but you can read the documentation for that.
  4378.  
  4379. This is much more sophisticated than Projector or SourceServer or RCS.
  4380. As long as there was a way to get drafts of parts, most programmers
  4381. would be happy to work in such a world.
  4382.  
  4383. Any programmer will tell you that comments don't cut it as for
  4384. keeping sufficient information to maintain software, but it is the
  4385. only tool available.   New part editors, and ways to co-ordinate them
  4386. may be just the way to do it.
  4387.  
  4388. Okay, who's up for writing an OpenDoc document to replace Think C and
  4389. CodeWarrior?
  4390. -- 
  4391. -- * * * CFV: net.short.signatures * * *--
  4392. Bob Dalgleish     zaphod!bobd@tribune.usask.ca     CompuServe: 70521,2011
  4393.  
  4394. +++++++++++++++++++++++++++
  4395.  
  4396. >From will@cs.su.oz.au (William Uther)
  4397. Date: 3 Sep 1994 10:36:00 +1000
  4398. Organization: Basser Dept of Computer Sciece, Uni of Sydney, Australia
  4399.  
  4400. In article <5865@zaphod.uucp>, Bob Dalgleish <bobd@zaphod.UUCP> wrote:
  4401. >In article <susser-3008941029470001@susser.apple.com> susser@apple.com (Joshua Susser) writes:
  4402.  
  4403. [snip]
  4404.  
  4405. >>But even without 3D, OpenDoc is suitable for much more than just a
  4406. >>"Graphic+MooV+Text+Spreadsheet" kind of document.  See below.
  4407. >
  4408. >I started to have a vision.  Having followed this thread for awhile, and
  4409. >read through the WWDC documentation, installed BBEdit 3.0, Symantec C 7,
  4410. >and MW CW, purchased and installed a *very expensive* CASE system, and
  4411. >still being faced with elementary problems of envisioning software, I
  4412. >started to see a trend.
  4413.  
  4414. [snip]
  4415.  
  4416. >Even though we think of source code as a text file, we, in fact, treat
  4417. >it as a specialized database of relationships.  Witness PopUpFuncs,
  4418. >CMaster, ObjectMaster, and other extensions to the basic set of text
  4419. >manipulation tools.  Someone else has suggested "Could I not see my
  4420. >source code as a flow-chart, data-flow chart, decision table, coverage
  4421. >checklist?"
  4422.  
  4423. [snip]
  4424.  
  4425. >Okay, who's up for writing an OpenDoc document to replace Think C and
  4426. >CodeWarrior?
  4427.  
  4428. This sounds very like the Gwydion project CMU are working on (with Apple?).
  4429.  
  4430. The WWW page URL is:
  4431. http://legend.gwydion.cs.cmu.edu:8001/gwydion/
  4432.  
  4433. They are working on a development environment for Dylan (aka BHS) which
  4434. includes being able view your code as hypertext.  They mention version control
  4435. where you can lock functional parts on the program - e.g. if you were changing
  4436. the interface to a function you could lock "this function and all functions
  4437. that reference it".  Anyway, have a look the WWW page for more info.
  4438.  
  4439. \x/ill      :-}
  4440.  
  4441.  
  4442. +++++++++++++++++++++++++++
  4443.  
  4444. >From deanp@zikzak.apana.org.au (Dean Perry)
  4445. Date: 8 Sep 1994 04:45:11 GMT
  4446. Organization: Zikzak public access UNIX, Melbourne Australia
  4447.  
  4448. eric larson (eric.larson@f620.n2605.z1.fidonet.org) wrote:
  4449. :  >      A more fundamental problem is that all this machinery exists mostly
  4450. :  > so you can embed different documents in your word processor and still
  4451. :  > edit them with appropriate tools.  It's sort of "Publish and Subscribe,
  4452. :  > The Next Generation".  Yes, you can do other stuff, but the touted
  4453. :  > advantage is mostly for integrated documents.  It's all focused on
  4454. :  > what documents look like, not what they mean.  Is that really worth all
  4455. :  > this complexity?
  4456.  
  4457. : One concern I have about this technology is what it is going to do to document
  4458. : portability.
  4459.  
  4460. Like what do you do when you don't have all the parts to view 
  4461. something... I guess this will come about along the lines of what happens 
  4462. if you have a QuickTime clip in a document on a machine without it 
  4463. installed - you get a dead placeholder that may or may not represent the 
  4464. content.  The whole idea of *distributed* parts freaks me a little - what 
  4465. do you do when your document relies on net connections to multiple remote 
  4466. servers and the net goes away?
  4467.  
  4468. dean
  4469. --
  4470.         Zikzak public access UNIX, Melbourne, Australia.
  4471.  
  4472. +++++++++++++++++++++++++++
  4473.  
  4474. >From quinn@cs.uwa.edu.au (Quinn "The Eskimo!")
  4475. Date: Thu, 08 Sep 1994 17:50:17 +0800
  4476. Organization: Department of Computer Science, The University of Western Australia
  4477.  
  4478. In article <nagleCvB8zv.M3K@netcom.com>, nagle@netcom.com (John Nagle) wrote:
  4479.  
  4480. >      Or long-term document integrity.  Will you still be able to read
  4481. >your document a few years downstream, after all the applications have
  4482. >changed?  And if you can't, which vendor do you call for help?
  4483.  
  4484. I don't think this will be a problem.  Unless there are nasty bugs in the
  4485. part handlers, OpenDoc should still be able to open the document, even if
  4486. you can't edit (or even view) it.  You'll be able to rip it apart and try
  4487. to find out which part handler is having the bad day.
  4488.  
  4489. Alternatively it's likely that sooner or later, someone will build
  4490. 'ResEdit for Bento', an application that lets you tear OpenDoc documents
  4491. apart at a low level.  This means you'll be able to break any document up
  4492. into its component parts and hence edit them that way.
  4493.  
  4494. Let's face it, you face exactly the same problem today with non-compound
  4495. documents.  If WidgetWorks Inc goes down the tubes and, 3 years later,
  4496. WidgetWorks fails to run under Gerschwin, well you're screwed, aren't you?
  4497.  
  4498. Share and Enjoy.
  4499. -- 
  4500. Quinn "The Eskimo!"        "Scout in a can. Simple, cheap, easy
  4501.                             to use and it's expendable!"
  4502.  
  4503. +++++++++++++++++++++++++++
  4504.  
  4505. >From gurgle@dnai.com (Pete Gontier)
  4506. Date: Thu, 08 Sep 1994 09:40:32 -0800
  4507. Organization: Integer Poet Software
  4508.  
  4509. In article <34m4t5$k9p@lazar.apana.org.au>, deanp@zikzak.apana.org.au
  4510. (Dean Perry) wrote:
  4511.  
  4512. > : One concern I have about this technology is what it is going to do to
  4513. > : document portability.
  4514. > Like what do you do when you don't have all the parts to view 
  4515. > something... I guess this will come about along the lines of what happens 
  4516. > if you have a QuickTime clip in a document on a machine without it 
  4517. > installed - you get a dead placeholder that may or may not represent the 
  4518. > content.
  4519.  
  4520. Good answer. Gold star. :-) However, this is not a complete solution.
  4521.  
  4522. We all know what happens when an app fails to save font names in its
  4523. documents as opposed to font numbers. The font numbers will work as long
  4524. as (1) the doc stays on one machine, and (2) the user doesn't mess with
  4525. hir Fonts folder. Deprive the document of either one of those conditions,
  4526. though, and the page layout goes straight in the toilet, even if you're
  4527. able to find a similar font and apply it through some kind of global style
  4528. mechanism (because presumably there are too many changes to make
  4529. manually).
  4530.  
  4531. Now imagine what's missing is not just a font but a program. Presumably
  4532. the program is a bit more complex than a font. Don't get me wrong; it
  4533. might be as clean as a QuickTime PICT. But we can't really guess what
  4534. unfortunate portability issues will appear until they do appear, because
  4535. nobody has done this before.
  4536.  
  4537. > The whole idea of *distributed* parts freaks me a little - what 
  4538. > do you do when your document relies on net connections to multiple remote 
  4539. > servers and the net goes away?
  4540.  
  4541. It doesn't strike me that this is any worse than a part editor which is
  4542. missing when the doc is opened. One important difference is that the app
  4543. shell might be able to take a snap shot of the part's screen
  4544. representation before the part editor goes away.
  4545.  
  4546. -- 
  4547.  
  4548.  Pete Gontier // impudent ass // gurgle@dnai.com
  4549.  
  4550.  "The need to be (or appear to be) sophisticated pervades the very
  4551.  atmosphere in which we, the Magazine Reading Class, move."
  4552.                   -- Ellis Weiner, Spy Magazine, 9/94
  4553.  
  4554. +++++++++++++++++++++++++++
  4555.  
  4556. >From Jens Alfke <jens_alfke@powertalk.apple.com>
  4557. Date: Thu, 8 Sep 1994 18:40:11 GMT
  4558. Organization: Apple Computer
  4559.  
  4560. Dean Perry, deanp@zikzak.apana.org.au writes:
  4561. > : One concern I have about this technology is what it is going to do to
  4562. document
  4563. > : portability.
  4564. > Like what do you do when you don't have all the parts to view 
  4565. > something...
  4566.  
  4567. There are three levels of support for this:
  4568. * If you don't have the preferred editor for that part, but have another
  4569. editor that can edit one or more of the content types saved for that part,
  4570. that editor will be used. (Note that an editor can save a part in multiple
  4571. representations, kind of like writing to the Clipboard or drag mgr today.)
  4572. * If that fails, but there is a translator available that knows how to
  4573. translate one of the part's formats into something one of your available
  4574. editors can read, the translator will be used. (On the Mac, this uses the
  4575. translation system from Mac Easy Open. Other platforms will implement it
  4576. differently.)
  4577. * If all else fails, the part will display as a gray box that displays its
  4578. content type(s). Note that the document will still open, and all other parts
  4579. for which an editor could be found will appear.
  4580.  
  4581. Someone else mentioned a "Bento ResEdit" ... someone (not at Apple) has
  4582. written a tool like that. I'm not sure whether they're going to finish the
  4583. implementation or distribute it more widely. It'd be quite useful.
  4584.  
  4585. --Jens Alfke                           jens_alfke@powertalk.apple.com
  4586.                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  4587.  
  4588. +++++++++++++++++++++++++++
  4589.  
  4590. >From h+@nada.kth.se (Jon W{tte)
  4591. Date: Fri, 09 Sep 1994 10:07:24 +0200
  4592. Organization: Royal Institute of Something or other
  4593.  
  4594. In article <34m4t5$k9p@lazar.apana.org.au>,
  4595. deanp@zikzak.apana.org.au (Dean Perry) wrote:
  4596.  
  4597. >Like what do you do when you don't have all the parts to view 
  4598. >something...
  4599.  
  4600. Part Viewers are encouraged to be free, while the editors would 
  4601. cost money.
  4602.  
  4603. Also, a Part Editor is encouraged to store its info in one or 
  4604. more standard formats (i e PICT) as well as its own format, so 
  4605. you can use the "SimpleText" part to view but not edit it.
  4606.  
  4607. >content.  The whole idea of *distributed* parts freaks me a little - what 
  4608. >do you do when your document relies on net connections to multiple remote 
  4609. >servers and the net goes away?
  4610.  
  4611. What do you do when the power goes out? Oh, it doesn't go out 
  4612. often, but it happens, right? Networks will have about the same 
  4613. reliability. (And aside from having an UPS, I now am looking 
  4614. for a V.24 adapter for my digital cellular phone :-)
  4615.  
  4616. Cheers,
  4617.  
  4618.                 / h+
  4619.  
  4620.  
  4621. --
  4622.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  4623.    This is the kind of totally-gross-out-sick stuff you can do with C++ that
  4624.    makes the language kind of neat.
  4625.                                             -- Keith Rollin
  4626.  
  4627.  
  4628. +++++++++++++++++++++++++++
  4629.  
  4630. >From nagle@netcom.com (John Nagle)
  4631. Date: Fri, 9 Sep 1994 16:36:15 GMT
  4632. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  4633.  
  4634. gurgle@dnai.com (Pete Gontier) writes:
  4635. >In article <34m4t5$k9p@lazar.apana.org.au>, deanp@zikzak.apana.org.au
  4636. >(Dean Perry) wrote:
  4637. >> : One concern I have about this technology is what it is going to do to
  4638. >> : document portability.
  4639. >> 
  4640. >> Like what do you do when you don't have all the parts to view 
  4641. >> something... 
  4642. >We all know what happens when an app fails to save font names in its
  4643. >documents as opposed to font numbers. ...
  4644. >Now imagine what's missing is not just a font but a program. ...
  4645.  
  4646.      Yeah.  Supposedly the plan for OpenDoc is that a PICT representation
  4647. of the object is carried with the document, so it can be viewed without
  4648. the appropriate editor.
  4649.  
  4650.      One implication is that even simple documents will be big.  A more
  4651. subtle implication is that document editability may invisibly degrade over
  4652. time as the underlying applications change.  The document may look just
  4653. fine until you try to do something to it.
  4654.  
  4655.                     John Nagle
  4656.  
  4657. +++++++++++++++++++++++++++
  4658.  
  4659. >From jonpugh@netcom.com (Jon Pugh)
  4660. Date: Tue, 13 Sep 1994 22:57:58 GMT
  4661. Organization: Will hack for food
  4662.  
  4663. John Nagle (nagle@netcom.com) wrote:
  4664.  
  4665. >      Yeah.  Supposedly the plan for OpenDoc is that a PICT representation
  4666. > of the object is carried with the document, so it can be viewed without
  4667. > the appropriate editor.
  4668.  
  4669. >      One implication is that even simple documents will be big.  A more
  4670. > subtle implication is that document editability may invisibly degrade over
  4671. > time as the underlying applications change.  The document may look just
  4672. > fine until you try to do something to it.
  4673.  
  4674. These are all concerns relating to OLE also.  In fact, Microsoft advocates
  4675. OLE as a superior technology because it includes a picture along with the
  4676. data whereas OpenDoc does not (according to this MicroSoft OLE comparison
  4677. paper I've been reading).  My favorite part is where they claim that because
  4678. the picture is included, the document may be printed without the editor
  4679. being involved.  They seem to have missed the whole resolution issue.
  4680.  
  4681. Personally, I like the OpenDoc approach better.  It takes a more functional
  4682. attitude, where parts can work the way they want instead of the way the
  4683. container wants, which is the OLE approach.  This paper says that OLE can do
  4684. OpenDoc's in place activation (normal OLE parts are inactive until clicked)
  4685. if the container app wants to.  It doesn't mention that no OLE apps want to. 
  4686. I can see why.  If you activate an Excel graph in Word when it scrolls onto
  4687. the screen, you need to launch Excel.  That's a nontrivial operation.  The
  4688. real question is, will you be able to init all your parts fast enough.  The
  4689. OLE folks don't think so, which is why they advocate static pictures, no 
  4690. implicit activation and printing from the pictures.
  4691.  
  4692. Jon
  4693.  
  4694. +++++++++++++++++++++++++++
  4695.  
  4696. >From philip@cs.wits.ac.za (Philip Machanick)
  4697. Date: 14 Sep 1994 07:07:06 GMT
  4698. Organization: Computer Science Dept, U of Witwatersrand
  4699.  
  4700. In article <jonpughCw3BsM.Bnz@netcom.com>, jonpugh@netcom.com (Jon Pugh) wrote:
  4701.  
  4702. > Personally, I like the OpenDoc approach better.  It takes a more functional
  4703. > attitude, where parts can work the way they want instead of the way the
  4704. > container wants, which is the OLE approach.  This paper says that OLE can do
  4705. > OpenDoc's in place activation (normal OLE parts are inactive until clicked)
  4706. > if the container app wants to.  It doesn't mention that no OLE apps want to. 
  4707. > I can see why.  If you activate an Excel graph in Word when it scrolls onto
  4708. > the screen, you need to launch Excel.  That's a nontrivial operation.  The
  4709. > real question is, will you be able to init all your parts fast enough.  The
  4710. > OLE folks don't think so, which is why they advocate static pictures, no 
  4711. > implicit activation and printing from the pictures.
  4712.  
  4713. The OLE people think this way because they are trying to move dinosaurs
  4714. around with a fly whisk. OpenDoc breaks apps down into more manageable
  4715. chunks - or at least will if programmers use it the way it was intended.
  4716. Launching a spreadsheet part (viewer not editor is the minimum needed)
  4717. handler should be a much more lightweight operation than launching Excel.
  4718.  
  4719. Another strategy would be to make resolution in a more general sense the
  4720. deciding factor on whether you need a part handler - to print to higher
  4721. resolution device, to open the object to edit it, to display it on a
  4722. screen with more colours etc.
  4723. -- 
  4724. Philip Machanick                   philip@cs.wits.ac.za
  4725. Department of Computer Science, University of the Witwatersrand
  4726. 2050 Wits, South Africa        (at University of Cape Town 4 July-7 Nov)
  4727. phone 27(11)716-3309  fax 27(11)339-7965
  4728.  
  4729. ---------------------------
  4730.  
  4731. >From alain@cs.uchicago.edu (Alain Aslag Roy)
  4732. Subject: Linking with QuickTime.xcoff for the power pc
  4733. Date: Tue, 13 Sep 1994 03:44:44 GMT
  4734. Organization: It lurks in the night.
  4735.  
  4736. I've been working on an application that uses QuickTime 2.0 on the power 
  4737. macintosh. I figured out how to link with the Import library for quicktime
  4738. (I got it from the Beta CD) and it works fine. Until I launch the program
  4739. in a low memory situation. Then I get a message about not being able to 
  4740. find the QuickTime Libary or something like that. If I free up some memory,
  4741. I don't have that problem.
  4742.  
  4743. Now, I'd really like it if I could handle this error on my own instead of the
  4744. system handling it for me. My program doesn't require QuickTime, but can use
  4745. it if it's there. Is there a way for me to prevent the system from reporting
  4746. this error and for me to handle it myself?
  4747.  
  4748. I'm using MPW with PPCC (The RISC SDK), the most recent version, if that 
  4749. matters.
  4750.  
  4751. Thanks in advance for any advice.
  4752.  
  4753. -alain
  4754.  
  4755. +++++++++++++++++++++++++++
  4756.  
  4757. >From zstern@adobe.com (Zalman Stern)
  4758. Date: Tue, 13 Sep 1994 20:58:20 GMT
  4759. Organization: Adobe Systems Incorporated
  4760.  
  4761. Alain Aslag Roy writes
  4762. [Program fails to launch when QuickTime library cannot be loaded, say for  
  4763. low memory reasons, or because it is not isntalled.]
  4764. > Now, I'd really like it if I could handle this error on my own instead of  
  4765. the
  4766. > system handling it for me.
  4767. > I'm using MPW with PPCC (The RISC SDK), the most recent version, if that 
  4768. > matters.
  4769.  
  4770. You want to make the linkage of the library "weak". This is done by adding a  
  4771. tilde after the library name in the argument to the makepef command. Like  
  4772. so:
  4773.     makepef <...> -l QuickTimeLib.xcoff=QuickTimeLib~
  4774.  
  4775. Figuring out if the library is actually there or not is another story. In  
  4776. theory there is a gestalt selector to do this, but it doesn't work. Instead  
  4777. you should test if a routine you use from the QuickTime library is NULL or  
  4778. not. The whole mass of code I put in to MacApp to deal with this looks like  
  4779. so:
  4780.  
  4781. /* Start with the Gestalt in as for a 68k. */
  4782.     theConfiguration.hasCompressionManager = Gestalt (gestaltCompressionMgr,  
  4783. response) == noErr;
  4784.  
  4785. /* For PowerPC make sure we can actually call QuickTime if its there...
  4786.  * This piece of code is incredibly screwed up because we link to QuickTime
  4787.  * weakly. Meaning that if the library is not there, undefined externals
  4788.  * referencing that library do not keep us from running. However, there
  4789.  * seems to be a case where the library is there, but cannot be loaded due
  4790.  * to a lack of memory. In this case, the gestalt call says its there, but
  4791.  * the routines we call are still NULL. So what the hell, I just check one
  4792.  * of the routines that is supposed to be in that library.
  4793.  */
  4794. #ifdef __powerc
  4795.     theConfiguration.hasCompressionManager =
  4796.     (theConfiguration.hasCompressionManager &&
  4797.         (Gestalt(gestaltQuickTimeFeatures, response) == noErr) &&
  4798.         (response & (1 << gestaltPPCQuickTimeLibPresent)) &&
  4799.         &CustomGetFilePreview != NULL);
  4800. #endif
  4801. --
  4802. Zalman Stern           zalman@adobe.com            (415) 962 3824
  4803. Adobe Systems, 1585 Charleston Rd., POB 7900, Mountain View, CA 94039-7900
  4804.  Please do not change color while I am talking to you -- MC 900 Ft Jesus.
  4805.  
  4806. ---------------------------
  4807.  
  4808. >From gmcgath@condes.mv.com (Gary McGath)
  4809. Subject: Multiple monitors
  4810. Date: Sun, 4 Sep 1994 13:14:42 GMT
  4811. Organization: Conceptual Design
  4812.  
  4813. As a result of my unusual monitor configuration, I've developed an 
  4814. awareness of problems that often crop up in applications whose 
  4815. programmers fail to think about multiple monitors. Here are  
  4816. my suggestions for good multiple monitor programming style; I 
  4817. welcome additions and comments. Perhaps someone would care to throw
  4818. in some suggestions for Pivot monitors to go with these?
  4819.  
  4820. To figure the maximum window size, check the GrayRgn, not ScreenBits. 
  4821. The user should be able to size a window across two monitors, or to 
  4822. stretch it to the dimensions of a screen that may be bigger than the 
  4823. main screen.
  4824.  
  4825. Don't assume that just because the main device is monochrome, the system 
  4826. doesn't have color. Use GetMaxDevice.
  4827.  
  4828. If it's important that a new window be displayed in color, put it on the 
  4829. screen with the greatest depth. This is especially important with 
  4830. non-draggable dialogs. It's frustrating to have a color picker 
  4831. window nailed to a monochrome monitor when there's a perfectly good 
  4832. color monitor next to it.
  4833.  
  4834. If you have a graphic with both monochrome and color versions, check 
  4835. which device it's being drawn to when deciding which version to use. 
  4836. (Some calls, such as PlotCIcon, will do this automatically.) 
  4837.  
  4838. Clicking on the zoom box of a window should position it in the screen
  4839. which it's currently occupying, rather than always hauling it to the 
  4840. main device. (Defining which screen a window is occupying in the general
  4841. case is tricky, to be sure.)
  4842.  
  4843. Remember that if your window occupies the whole main screen, it doesn't
  4844. necessarily occupy all of the desktop. It's still possible for the
  4845. user to click outside the window.
  4846.  
  4847. When bringing up a window, be sure that at least its title bar is on the
  4848. screen. If the user plays with the Monitors control panel and then 
  4849. reboots, a window which was on screen last time may be out of reach
  4850. this time. Some old DA's are especially bad about this, and can 
  4851. permanently vanish into offscreen limbo.
  4852.  
  4853. -- 
  4854.           Gary McGath
  4855.           gmcgath@condes.mv.com
  4856.  
  4857. +++++++++++++++++++++++++++
  4858.  
  4859. >From h+@nada.kth.se (Jon W{tte)
  4860. Date: Mon, 05 Sep 1994 17:34:25 +0200
  4861. Organization: Royal Institute of Something or other
  4862.  
  4863. >To figure the maximum window size, check the GrayRgn, not ScreenBits. 
  4864.  
  4865. Yes. Most apps that do this wrong, can be coerced by using the 
  4866. command key when resizing the window.
  4867.  
  4868. >Don't assume that just because the main device is monochrome, the system 
  4869. >doesn't have color. Use GetMaxDevice.
  4870.  
  4871. However, GetMaxDevice crashes on non-color machines, and if 
  4872. those are a factor, you have to check some more. I recently did 
  4873. an about box for someone else, which went pretty much like this:
  4874.  
  4875. depth = 1 ;
  4876.  
  4877. Is there color QD?
  4878. If yes, is there QuickTime?
  4879. If yes, depth = depth of GetMaxDevice()
  4880. If depth < 8, depth = 1
  4881.  
  4882. Load and draw pictures using b/w if depth = 1, else color. If 
  4883. depth is 8, use the palette of the screen the window's on 
  4884. (which is the deepest screen, to show off the colors :-)
  4885.  
  4886. QuickTime is required because of the JPEG about picture. Code 
  4887. and images for 24-bit color and black/white come in at under 40k!
  4888.  
  4889. >If you have a graphic with both monochrome and color versions, check 
  4890. >which device it's being drawn to when deciding which version to use. 
  4891. >(Some calls, such as PlotCIcon, will do this automatically.) 
  4892.  
  4893. Use DeviceLoop()
  4894.  
  4895. >Clicking on the zoom box of a window should position it in the screen
  4896. >which it's currently occupying, rather than always hauling it to the 
  4897.  
  4898. Yes! The screen with the most pixels of the window on it. It 
  4899. should also move the window as little as possible, i e first 
  4900. grow it down/right until it can grow it no more; then keep 
  4901. growing up-left 'til the screen is full.
  4902.  
  4903. >When bringing up a window, be sure that at least its title bar is on the
  4904. >screen. If the user plays with the Monitors control panel and then 
  4905.  
  4906. Yeah, this is a killer. I have an FKEY that staggers all visible 
  4907. app windows. Can do funky things to palettes, but saves the day 
  4908. occasionally :-)
  4909.  
  4910. Cheers,
  4911.  
  4912.                 / h+
  4913.  
  4914.  
  4915.  
  4916. --
  4917.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  4918.    This signature is kept shorter than 4 lines in the interests of UseNet
  4919.    S/N ratio.
  4920.  
  4921.  
  4922. +++++++++++++++++++++++++++
  4923.  
  4924. >From neil_ticktin@xplain.com (Neil Ticktin)
  4925. Date: Mon, 5 Sep 1994 17:54:25 GMT
  4926. Organization: MacTech Magazine/Xplain Corporation
  4927.  
  4928. In article <gmcgath-0409940814420001@condes.mv.com>, gmcgath@condes.mv.com
  4929. (Gary McGath) wrote:
  4930.  
  4931. >> As a result of my unusual monitor configuration, I've developed an 
  4932. >> awareness of problems that often crop up in applications whose 
  4933. >> programmers fail to think about multiple monitors. Here are  
  4934. >> my suggestions for good multiple monitor programming style; I 
  4935. >> welcome additions and comments. Perhaps someone would care to throw
  4936. >> in some suggestions for Pivot monitors to go with these?
  4937.  
  4938.  
  4939. Gary,
  4940.  
  4941. We found the similar things.  We published an article about how to support
  4942. multiple monitors a couple issues back.  We hope, as you do, that people
  4943. will provide more support for multiple monitors -- it's annoying when they
  4944. don't.
  4945.  
  4946. Thanks,
  4947. Neil
  4948.  
  4949. - ---------------------------------------------------------------------
  4950.            Neil Ticktin, MacTech Magazine (formerly MacTutor)
  4951. PO Box 250055, Los Angeles, CA 90025 * 310-575-4343 * Fax: 310-575-0925
  4952.  For more info, anonymous ftp to ftp.netcom.com and cd to /pub/xplain
  4953.   custservice@xplain.com * editorial@xplain.com * adsales@xplain.com
  4954. marketing@xplain.com * accounting@xplain.com * pressreleases@xplain.com
  4955.    progchallenge@xplain.com * publisher@xplain.com * info@xplain.com
  4956.  
  4957. +++++++++++++++++++++++++++
  4958.  
  4959. >From jonpugh@netcom.com (Jon Pugh)
  4960. Date: Mon, 5 Sep 1994 20:02:00 GMT
  4961. Organization: Will hack for food
  4962.  
  4963. Gary McGath (gmcgath@condes.mv.com) wrote:
  4964. > When bringing up a window, be sure that at least its title bar is on the
  4965. > screen. If the user plays with the Monitors control panel and then 
  4966. > reboots, a window which was on screen last time may be out of reach
  4967. > this time. Some old DA's are especially bad about this, and can 
  4968. > permanently vanish into offscreen limbo.
  4969.  
  4970. I only require that the 16 bits or so of the left or right end of the title
  4971. bar be on screen.  This allows you to slam a window offscreen into the bottom 
  4972. corners of the screen and remain there after it is closed and reopened.  I
  4973. suppose it doesn't catch the big window with both ends off screen, but I
  4974. don't think anyone's managed to get that and not minded it being reset.
  4975.  
  4976. We regularly get into window wars at work via Projector.  My compatriot has
  4977. his menubar on the little color screen (for some of the reasons outlined
  4978. before) and edits on a large b&w monitor next to it.  Then he checks in 
  4979. and I open the window half off my little color monitor and not on my 16"
  4980. color monitor.  Since the title bar is on screen, it doesn't move though.
  4981. I don't see a good way to fix this without saving the entire monitor setup.
  4982.  
  4983. Jon
  4984.  
  4985.  
  4986. +++++++++++++++++++++++++++
  4987.  
  4988. >From Charles B. Cranston <zben@ni.umd.edu>
  4989. Date: 6 Sep 1994 19:55:23 GMT
  4990. Organization: Network Infrastructure U Maryland College Park
  4991.  
  4992. It may be worth mentioning that there is an Apple Human Interface
  4993. Note on the right things to do for multiple monitors, and this
  4994. information has also been integrated into the McGraw Hill
  4995. "Macintosh Human Interface Guidelines", mostly in chapter 5.
  4996.  
  4997. It is amazing how much software does NOT do the right things,
  4998. even MPW didn't zoom correctly until 3.3 came out...
  4999.  
  5000. +++++++++++++++++++++++++++
  5001.  
  5002. >From joseph@joebloe.maple-shade.nj.us (Joseph "Moof-in'" Hall)
  5003. Date: Thu, 8 Sep 94 01:36:24 MST
  5004. Organization: comp.sys.mac.programmer.moof Advocacy
  5005.  
  5006.  
  5007. In article <jonpughCvoABD.6Bn@netcom.com> (comp.sys.mac.programmer), jonpugh@netcom.com (Jon Pugh) writes:
  5008. ) We regularly get into window wars at work via Projector.  My compatriot has
  5009. ) his menubar on the little color screen (for some of the reasons outlined
  5010. ) before) and edits on a large b&w monitor next to it.  [...]
  5011.  
  5012. I've wondered why apps don't save window position as an offset
  5013. relative to the nearest corner or something like that.  It would certainly
  5014. solve some window placement disputes.
  5015.  
  5016. =============== O Fortuna, velut Luna, statu variabilis ===============
  5017. uunet!joebloe!joseph   (602) 732-2549 day   joseph%joebloe@uunet.uu.net
  5018. 1400 N Alma School                #163               Chandler, AZ 85224
  5019. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  5020.            Be hip!  Support comp.sys.mac.programmer.moof!
  5021.  
  5022. +++++++++++++++++++++++++++
  5023.  
  5024. >From jonpugh@netcom.com (Jon Pugh)
  5025. Date: Sat, 10 Sep 1994 22:10:28 GMT
  5026. Organization: Will hack for food
  5027.  
  5028. Joseph "Moof-in'" Hall (joseph@joebloe.maple-shade.nj.us) wrote:
  5029.  
  5030. > I've wondered why apps don't save window position as an offset
  5031. > relative to the nearest corner or something like that.  It would certainly
  5032. > solve some window placement disputes.
  5033.  
  5034. That doesn't save your window size.  It's simple to just store the rect.
  5035. Of course, it wouldn't be much harder to store the offset point and the 
  5036. window height and width point either.  Sounds like it's time for some 
  5037. experimentation to see if this would buy you anything.  It sounds identical
  5038. in most cases though.
  5039.  
  5040. Jon
  5041.  
  5042.  
  5043. +++++++++++++++++++++++++++
  5044.  
  5045. >From ari@world.std.com
  5046. Date: Thu, 15 Sep 1994 06:02:23 GMT
  5047. Organization: The World Public Access UNIX, Brookline, MA
  5048.  
  5049. In article <9668AA910721.386931@klkmac014.nada.kth.se>,
  5050. Jon W{tte <h+@nada.kth.se> wrote:
  5051. >>If you have a graphic with both monochrome and color versions, check 
  5052. >>which device it's being drawn to when deciding which version to use. 
  5053. >>(Some calls, such as PlotCIcon, will do this automatically.) 
  5054. >
  5055. >Use DeviceLoop()
  5056.  
  5057. While working on my popup CDEF, I ran into a problem drawing a color
  5058. image from an offscreen graphics world when the destination rectangle
  5059. spanned two monitors with different depths. The problem arose because
  5060. the offscreen gworld was created with the depth of the deepest
  5061. monitor. The portion of the image that was copied to the color monitor
  5062. was displayed perfectly. But the portion of the image that was copied
  5063. to the black and white monitor was real ugly, since all the color
  5064. pixels got mapped to black. The only solution I could find was to use
  5065. a DeviceLoop when drawing an image that spans monitors of different
  5066. depths. Unfortunately, this meant that I couldn't use the offscreen
  5067. gworld, and the image flickers if it spans monitors with different
  5068. depths.
  5069.  
  5070. -- 
  5071. Ari Halberstadt                                 ari@world.std.com
  5072. One generation passes away, and another generation comes: but the
  5073. earth abides for ever. -- Ecclesiastes, 1:4.
  5074.  
  5075. +++++++++++++++++++++++++++
  5076.  
  5077. >From ari@world.std.com
  5078. Date: Thu, 15 Sep 1994 06:08:21 GMT
  5079. Organization: The World Public Access UNIX, Brookline, MA
  5080.  
  5081. In article <34ihfb$8c2@haven.umd.edu>,
  5082. Charles B. Cranston  <zben@ni.umd.edu> wrote:
  5083. >It is amazing how much software does NOT do the right things,
  5084. >even MPW didn't zoom correctly until 3.3 came out...
  5085.  
  5086. Well, I still think MPW misses the mark. And SADE and HyperCard are
  5087. *very* annoying. I put the Worksheet window in SADE on my small
  5088. monitor and put the source code window on my big monitor. Then, when I
  5089. hit command-F to search for something, the find dialog pops up
  5090. way-over-there on the little monitor; BLECH! HyperCard does similar
  5091. stupid things. And THINK C 7.0 even stuck my windows OFF SCREEN!!!
  5092. YES, I OPENED A WINDOW AND ITS TITLE BAR WAS HIDDEN BEHIND THE MENU
  5093. BAR! Fortunately, I've been using macs for far too long, and promptly
  5094. broke into MacsBug and set MBarHeight to 0 and dragged the windows
  5095. back to somewhere more accessable. (The alternative of editing the
  5096. menu record with MacsBug, with the associated structure and content
  5097. regions, etc. just was out of the question; I don't know what I would
  5098. have done with a PowerPC!)
  5099. -- 
  5100. Ari Halberstadt                                 ari@world.std.com
  5101. One generation passes away, and another generation comes: but the
  5102. earth abides for ever. -- Ecclesiastes, 1:4.
  5103.  
  5104. ---------------------------
  5105.  
  5106. >From qsi@cnh.wlink.nl (Peter Kocourek)
  5107. Subject: The 'aete' resource and the Script Editor
  5108. Date: 07 Sep 94 01:24:16 +
  5109. Organization: Care Net Holland
  5110.  
  5111. Hi,
  5112.  
  5113. I just had strange problem with the Script Editor and the 'aete' resource. I
  5114. had already added a few events to the aete resource, and everything was
  5115. working fine. Then I added a simple event, with no required parameters or any
  5116. fancy stuff. That's when the weirdness began.
  5117.  
  5118. When I sent the event to myself, everything was fine. But when I tried to send
  5119. the event from the Script Editor, my event handler returned errAEParamMissed,
  5120. when I was making the routine check for missed parameters. Yet I had indicated
  5121. in the aete, that the event did not have any parameters...
  5122.  
  5123. So, trying to find out what kind of parameter the Script Editor was passing
  5124. along, I discovered that the type of the missed parameter was 'keyw', and the
  5125. type of keyword I'd missed was '----'. I merrily put in code to get the
  5126. parameter, but that call to AEGetParamPtr came back with errAEDescNotFound,
  5127. even though I had just extracted the relevant information about the missing
  5128. parameter from the AppleEvent!
  5129.  
  5130. I checked the Event Log in the Script Editor, and sure enough, when sending my
  5131. event "foo", the Log said it had sent "foo current application". And that
  5132. despite the fact that it said in the aete resource that I wanted no
  5133. parameters, direct or otherwise.
  5134.  
  5135. Ultimately, after a lot of frustration, I found the cause of the problem: in
  5136. the aete resource, I had specified a the direct parameter as being of type
  5137. typeNull, but I had the "is optional" flag off. Once I switched that on,
  5138. everything worked fine.
  5139.  
  5140. Is this the way the Script Editor is supposed to behave? I thought that a
  5141. typeNull type indicated that no parameter was to be included under any
  5142. circumstances. And the errAEDescNotFound still bothers me. If I find the type
  5143. of the missed parameter, surely I should be able to extract it from the
  5144. AppleEvent; in this case the AE Manager seemed to be telling me that there is
  5145. an additional parameter in there, but that it can't find it. What's going on?
  5146.  
  5147.  
  5148. YHS:QSI!
  5149.  
  5150. +++++++++++++++++++++++++++
  5151.  
  5152. >From jonpugh@netcom.com (Jon Pugh)
  5153. Date: Sat, 10 Sep 1994 21:53:36 GMT
  5154. Organization: Will hack for food
  5155.  
  5156. Peter Kocourek (qsi@cnh.wlink.nl) wrote:
  5157.  
  5158. > I just had strange problem with the Script Editor and the 'aete' resource. 
  5159.  
  5160. > [snip]
  5161.  
  5162. > Ultimately, after a lot of frustration, I found the cause of the problem: in
  5163. > the aete resource, I had specified a the direct parameter as being of type
  5164. > typeNull, but I had the "is optional" flag off. Once I switched that on,
  5165. > everything worked fine.
  5166.  
  5167. Ed Lai has been telling people to make sure they set the optional bit if
  5168. they used a direct parameter of typeNull (i.e. none) for quite some time.  I
  5169. guess now we know why.  ;)
  5170.  
  5171. Regardless of whether it is intential or not, it is the way it works, so be
  5172. sure to do this.
  5173.  
  5174. Jon
  5175.  
  5176. +++++++++++++++++++++++++++
  5177.  
  5178. >From lai@apple.com (Ed Lai)
  5179. Date: 14 Sep 1994 16:16:31 GMT
  5180. Organization: Apple
  5181.  
  5182. In article <4cb_9409071502@cnh.wlink.nl>, qsi@cnh.wlink.nl (Peter Kocourek)
  5183. wrote:
  5184.  
  5185. > Hi,
  5186. > I just had strange problem with the Script Editor and the 'aete' resource. I
  5187. > had already added a few events to the aete resource, and everything was
  5188. > working fine. Then I added a simple event, with no required parameters or any
  5189. > fancy stuff. That's when the weirdness began.
  5190. > When I sent the event to myself, everything was fine. But when I tried to send
  5191. > the event from the Script Editor, my event handler returned errAEParamMissed,
  5192. > when I was making the routine check for missed parameters. Yet I had indicated
  5193. > in the aete, that the event did not have any parameters...
  5194. > So, trying to find out what kind of parameter the Script Editor was passing
  5195. > along, I discovered that the type of the missed parameter was 'keyw', and the
  5196. > type of keyword I'd missed was '----'. I merrily put in code to get the
  5197. > parameter, but that call to AEGetParamPtr came back with errAEDescNotFound,
  5198. > even though I had just extracted the relevant information about the missing
  5199. > parameter from the AppleEvent!
  5200. > I checked the Event Log in the Script Editor, and sure enough, when sending my
  5201. > event "foo", the Log said it had sent "foo current application". And that
  5202. > despite the fact that it said in the aete resource that I wanted no
  5203. > parameters, direct or otherwise.
  5204. > Ultimately, after a lot of frustration, I found the cause of the problem: in
  5205. > the aete resource, I had specified a the direct parameter as being of type
  5206. > typeNull, but I had the "is optional" flag off. Once I switched that on,
  5207. > everything worked fine.
  5208. > Is this the way the Script Editor is supposed to behave? I thought that a
  5209. > typeNull type indicated that no parameter was to be included under any
  5210. > circumstances. And the errAEDescNotFound still bothers me. If I find the type
  5211. > of the missed parameter, surely I should be able to extract it from the
  5212. > AppleEvent; in this case the AE Manager seemed to be telling me that there is
  5213. > an additional parameter in there, but that it can't find it. What's going on?
  5214. > YHS:QSI!
  5215.  
  5216. This is not a problem with the script editor. I always consider this to
  5217. be a problem of AppleScript, although I was told there are reason to do
  5218. it that way so it can not be fixed. As you discoverd, if the direct 
  5219. parameter is of type typeNull, then AppleScript would send a typeNull
  5220. as the direct parameter. The AppleEvent manager checks every parameter
  5221. you have accessed. If you ask for parameter missed, then it returns
  5222. the keyword '----'. When you try to get the direct parameter, AEM
  5223. found the type to be typeNull, which means no parameter, so
  5224. AEM got fooled has say errAEDescNotFound. The last part can be
  5225. considered to be an AEM bug, although it is almost excusable.
  5226. -- 
  5227. /* Disclaimer: All statments and opinions expressed are my own */
  5228. /* Edmund K. Lai                                               */
  5229. /* Apple Computer, MS303-3A                                    */
  5230. /* 20525 Mariani Ave,                                          */
  5231. /* Cupertino, CA 95014                                         */
  5232. /* (408)974-6272                                               */
  5233. zW@h9cOi
  5234.  
  5235. ---------------------------
  5236.  
  5237. >From eschen@molbio.cbs.umn.edu (Art Eschenlauer)
  5238. Subject: can extensions send appleevents?
  5239. Date: Wed, 14 Sep 1994 13:07:32 GMT
  5240. Organization: University of Minnesota, Twin Cities
  5241.  
  5242. Last night I was plughing around in my System 7.0.1 software, looking at
  5243. SIZE resources. I found that the Finder has the HighLevelEventAware flag
  5244. set but that the System does not. The dogma is that to send AppleEvents success-
  5245. fully using AESend, an 'application' must have the HighLevelEventAware flag
  5246. set. I want to send appleevents from an extension that is called via patches
  5247. to drawmenubar, systemmenu, and menuselect from within ANY application (that
  5248. uses the menubar). How will I get in trouble here? 1. Will I be hosed if the
  5249. calling app is not HighLevelEventAware? 2. Will I be hosed all the time because
  5250. the system is not HighLevelEventAware? 3. By some bizarre quirk of fate, will
  5251. I be successful all the time because the Finder is HighLevelEventAware (I want
  5252. to send 'odoc' events) or because code resources aren't restricted by th
  5253. HighLevelEventAware bit? 4. Am I hosed all the time because code resources
  5254. cannot send appleevents?
  5255.  
  5256. Thanks!
  5257.  
  5258. -Art
  5259.  
  5260. --
  5261. eschen@molbio.cbs.umn.edu (Art Eschenlauer, U of M Agronomy & Plant Genetics)
  5262. "The only things that you can take with you are those that you have given
  5263. away." - Sign under Peter Bailey's picture in "It's a Wonderful Life"
  5264.  
  5265. +++++++++++++++++++++++++++
  5266.  
  5267. >From tnleeuw@cs.vu.nl (Leeuw van der TN)
  5268. Date: Wed, 14 Sep 1994 14:42:54 GMT
  5269. Organization: Fac. Wiskunde & Informatica, VU, Amsterdam
  5270.  
  5271. Maybe you could make your Control Panel communicate with a background
  5272. application, that sends the AppleEvents to the Finder?
  5273. I think you can use Gestalt for that.
  5274.  
  5275. Just a passing thought.
  5276.  
  5277. --Tim van der Leeuw
  5278. tnleeuw@cs.vu.nl
  5279.  
  5280.  
  5281. +++++++++++++++++++++++++++
  5282.  
  5283. >From Jens Alfke <jens_alfke@powertalk.apple.com>
  5284. Date: Wed, 14 Sep 1994 20:52:09 GMT
  5285. Organization: Apple Computer
  5286.  
  5287. Art Eschenlauer, eschen@molbio.cbs.umn.edu writes:
  5288. > I want to send appleevents from an extension that is called via patches
  5289. > to drawmenubar, systemmenu, and menuselect from within ANY application (that
  5290. > uses the menubar). How will I get in trouble here?
  5291.  
  5292. The Apple Event Manager doesn't care what _code_ is running, only what
  5293. _process_ is active. If your patch tries to send an AE, what happens depends
  5294. on what app (the Finder is an app) is currently active. If it's AE-aware (as
  5295. per the SIZE rsrc) you'll succeed. If not, you'll fail, probably with the
  5296. infamous -903 error.
  5297. These days most apps are AE-aware, but some still are not.
  5298. Extensions like QuicKeys and KeyQuencer get around this problem by having a
  5299. small faceless bg app that they can have send the event for them. Of course,
  5300. you have to have some way of telling the app to send an event; this probably
  5301. boils down to some shared memory that you access via a Gestalt selector.
  5302.  
  5303. --Jens Alfke                           jens_alfke@powertalk.apple.com
  5304.                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  5305.  
  5306. +++++++++++++++++++++++++++
  5307.  
  5308. >From gurgle@dnai.com (Pete Gontier)
  5309. Date: Thu, 15 Sep 1994 00:27:49 -0800
  5310. Organization: Integer Poet Software
  5311.  
  5312. In article <Cw4FJG.Dvw@news.cis.umn.edu>, eschen@molbio.cbs.umn.edu (Art
  5313. Eschenlauer) wrote:
  5314.  
  5315. > 1. Will I be hosed if the calling app is not HighLevelEventAware?
  5316.  
  5317. Yes.
  5318.  
  5319. > 2. Will I be hosed all the time because the system is not HighLevelEventAware?
  5320.  
  5321. No.
  5322.  
  5323. > 3. By some bizarre quirk of fate, will
  5324. > I be successful all the time because the Finder is HighLevelEventAware (I want
  5325. > to send 'odoc' events) or because code resources aren't restricted by th
  5326. > HighLevelEventAware bit?
  5327.  
  5328. No.
  5329.  
  5330. > 4. Am I hosed all the time because code resources cannot send appleevents?
  5331.  
  5332. No.
  5333.  
  5334. Your point #1 is the important one here. When you call the AppleEvent
  5335. Manager, everything it wants to know is based on the context of the
  5336. current application. So when your code resource calls the AEM, you can
  5337. pretend the AEM "thinks" that the current application is making the call.
  5338.  
  5339. Consequently, if you can arrange for the calling app to be AE-aware, you
  5340. win. Since Finder is guaranteed to be AE-aware, you might be able to defer
  5341. sending your AE until Finder becomes the curreent app. (You can call
  5342. WakeUpProcess against it to make sure this happens quickly.)
  5343.  
  5344. Receiving AppleEvents is another matter entirely, of course, because your
  5345. handlers could conflict with the handlers of the current application.
  5346. There is probably a way to deal with this, but I haven't had to
  5347. investigate it yet, so I don't know much more than this.
  5348.  
  5349. There are some folks who know about undocumented interfaces to the AEM
  5350. which ignore the AE-aware status of the current app. These people claim
  5351. that even though the interfaces are undocumented there is enough
  5352. third-party software which uses the interfaces that it's unlikely Apple
  5353. will be able to break these interfaces in the future. (Probably these
  5354. people have written some of that software.) I won't names names to protect
  5355. the innocent, but now that I have mentioned this, perhaps someone will
  5356. pipe up.
  5357.  
  5358. -- 
  5359.  
  5360.  Pete Gontier // CTO, Integer Poet Software // gurgle@dnai.com
  5361.  
  5362.  "Yeah, that's fucking bizarre. That's one I'd never heard before. 
  5363.   Not even on the internet."
  5364.      -- Bob Mould, on rumors that he and Grant Hart were lovers
  5365.         when Hüsker Dü broke up, _Spin_ magazine interview, 10/94
  5366.  
  5367. +++++++++++++++++++++++++++
  5368.  
  5369. >From fixer@faxcsl.dcrt.nih.gov (Chris Disavow Twinkies Tate)
  5370. Date: Thu, 15 Sep 1994 13:24:10 GMT
  5371. Organization: DCRT, NIH, Bethesda, MD
  5372.  
  5373. In article <gurgle-1509940027490001@dynamic-224.dnai.com>, gurgle@dnai.com (Pete Gontier) writes:
  5374. >
  5375. >Receiving AppleEvents is another matter entirely, of course, because your
  5376. >handlers could conflict with the handlers of the current application.
  5377. >There is probably a way to deal with this, but I haven't had to
  5378. >investigate it yet, so I don't know much more than this.
  5379.  
  5380. As I recall, there's sample code from DTS around called something like 
  5381. "AEcdev," which uses an FBA as an AppleEvent "dispatcher."  When you
  5382. want to send an AE from your (non-application) code, you talk to the
  5383. FBA (presumably launched at system startup?), and away it goes.
  5384.  
  5385. Now: I'd have to dig into how the code resource and the FBA communicate.
  5386. Can standalone code use bare PPC?  Or does it have to go through something
  5387. like the Gestalt mechanism that INIT/cdev combinations frequently use to
  5388. communicate?
  5389.  
  5390. Either way, it seems that one could come up with a (small) FBA whose job
  5391. it is to handle two-way dispatch of AppleEvents, passing them along to
  5392. the proper standalone-code recipients.  The real problem, I think, is
  5393. tracking which chunk of standalone code is supposed to be receiving a
  5394. given AppleEvent.  Hmmmm....
  5395.  
  5396. __________
  5397. Christopher Tate                                   fixer@faxcsl.dcrt.nih.gov
  5398. GM/CS$ d(--) H s:- g+ p0 au a- w+ v+(-*) C++ U+(--) E++ N++ K W---(++)$ M++$
  5399.    V+ -po+ Y+ t+ 5-- j+ G? tv b+++ D+++ e++ u++(---) h--- f r+++ n+ y+++
  5400.  
  5401. +++++++++++++++++++++++++++
  5402.  
  5403. >From gurgle@dnai.com (Pete Gontier)
  5404. Date: Thu, 15 Sep 1994 09:22:01 -0800
  5405. Organization: Integer Poet Software
  5406.  
  5407. In article <1994Sep15.132410.1393@alw.nih.gov>, fixer@faxcsl.dcrt.nih.gov wrote:
  5408.  
  5409. > As I recall, there's sample code from DTS around called something like 
  5410. > "AEcdev," which uses an FBA as an AppleEvent "dispatcher."  When you
  5411. > want to send an AE from your (non-application) code, you talk to the
  5412. > FBA (presumably launched at system startup?), and away it goes.
  5413. > Now: I'd have to dig into how the code resource and the FBA communicate.
  5414. > Can standalone code use bare PPC?
  5415.  
  5416. That, in fact, is how the DTS code sample you mention works. :-)
  5417.  
  5418. > Or does it have to go through something like the Gestalt mechanism that 
  5419. > INIT/cdev combinations frequently use to communicate?
  5420.  
  5421. And this is how I have done it in the past. PPC is too much of a hassle if
  5422. you have no event loop.
  5423.  
  5424. > The real problem, I think, is
  5425. > tracking which chunk of standalone code is supposed to be receiving a
  5426. > given AppleEvent.
  5427.  
  5428. Well, if you have a one-to-one relation between FBA and code resource,
  5429. there isn't much confusion. However, the original poster was talking about
  5430. sending an AppleEvent from within a patch to Menu Manager traps. I don't
  5431. think he's going to succeed in receiving an AppleEvent in such a context
  5432. no matter how hard he tries. :-)
  5433.  
  5434. -- 
  5435.  
  5436.  Pete Gontier // CTO, Integer Poet Software // gurgle@dnai.com
  5437.  
  5438.  "Yeah, that's fucking bizarre. That's one I'd never heard before. 
  5439.   Not even on the internet."
  5440.      -- Bob Mould, on rumors that he and Grant Hart were lovers
  5441.         when Hüsker Dü broke up, _Spin_ magazine interview, 10/94
  5442.  
  5443. ---------------------------
  5444.  
  5445. End of C.S.M.P. Digest
  5446. **********************
  5447.  
  5448.  
  5449.  
  5450.